Tratando dados duplicados em indices com Violations table
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.
- 265 leituras





Comentar