Diferenca entre UNIQUE CONSTRAINT e UNIQUE INDEX
- Sintaxe de uso para criar , alterar e apagar
- Sao registrados em tabelas diferentes (sys*)
- Para indice unique o registro é validado linha a linha.
- Para tabelas logadas as constraints sao validadas apenas no final de cada sql INSERT/UPDATE/DELETE.
- É possivel alterar esta checagem para o final da transação (commit) utilizando
SET CONSTRAINTS [ALL|cons] DEFERRED
Leia outro artigo sobre este comando
Exemplo
CREATE TABLE tp01 ( cod INTEGER ); --OPCAO A-- create unique index tp01_uk on tp01 (cod) ; --OPCAO B-- alter table tp01 add constraint unique (cod) constraint ucons; INSERT INTO tp01 VALUES (1); INSERT INTO tp01 VALUES (2); INSERT INTO tp01 VALUES (3); UPDATE tp01 SET cod = cod + 1 WHERE 1 = 1 ; -- Quando ativado a opção A, irá retornar erro de registro duplicado na -- execução do update. -- Quando ativado a opção B (ou A+B), irá executar o update com sucesso.
Observação
Quando criado um indice unique nos campos x,y,z de uma tabela e em seguida uma constraint unique para os mesmos campos , a constraint reaproveita o indice existente e as regras para validar o unique prevalece a da constraint, ou seja, as alterações são validadas no final SQL.
- 2192 leituras
Tags:





Comentar