Tratando dados duplicados em indices com Violations table

Versão para impressãoEnviar para amigoVersão PDF

Objetivo do violations é tratar "falhas" em indices e constraints.
Estas falhas são: dados duplicados em indices e falha na checagem da constraint.

Quando o violations é ativado, qualquer falha é logada em 2 tabelas podendo assim realizar um tratamento relacionado aos dados.
Para trabalhar com violations é necessário:

  • Iniciar com o comando:
     START VIOLATIONS TABLE FOR <tabela>
    

    Neste processo será criado duas tabelas: diagnostic e violations
    Estas tabelas por padrão são criadas com os nomes vio_[tabela] , dia_[tabela].
    Para forçar nomes diferenciados para esta tabelas:
     START VIOLATIONS TABLE FOR <tabela> USING <vio_tab>, <diag_tab>
    

    Limitar quantidades de linhas incluidas em uma *unica* transação:
    - Para dia_[tab] MAX ROWS <nrows>
    - Para vio_[tab] MAX VIOLATIONS <nrows>
  • Definir para a mesma tabela que o indice/constraint terá status FILTERED
    Pode ser feito durante a criação do objeto ou atraves do comando
     SET INDEXES/CONSTRAINTS
    

    Adicionar FILTERING ao final do comando
    Pode-se definir se irá ocorrer erro ou não durante a violação:
    WITHOUT ERROR - Ira fazer com que não retorne erro na aplicação, que nenhuma linha seja incluida na tabela. Inclui violação nas vio e dia
    WITH ERROR - Opção default. Retorna erro da constraint. Não Inclui registro. Inclui violação nas vio e dia.
    Exemplos
     SET INDEXES FOR TABLE tab_xyz FILTERING WITHOUT ERROR ; 
     SET INDEXES idx_colunaA FILTERING WITH ERROR ; 
     SET CONSTRAINTS cons_colunaX FILTERING WITH ERROR ; 
    

  • Parar violations
    STOP VIOLATIONS TABLE FOR <tab>
  • As tabelas criadas com o violations não podem ser excluidas até que seja executado o STOP VIOLATIONS
  • As permissões de acesso destas tabelas seguem como base as permissões da tabela original com algumas ressalvas como criar REFERENCES
  • Estas tabelas são criadas no mesmo dbspace das tabelas originais , inclusive se a tabela for fragmentada.
  • Não é possível utilizar este recurso na criação de indices em tabelas que já possuem dados duplicados. Para estes casos é necessário remover os dados duplicados antes da criação do indice.

0
Ainda não votado
Sua avaliação: Nenhum
Tags:

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.