Diferenca entre UNIQUE CONSTRAINT e UNIQUE INDEX

Versão para impressãoEnviar para amigoVersão PDF
  • 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.

4
Média: 4 (4 votos)
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.