Como validar as alterações de dados (constraints) apenas no final da transação?

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

Basta utililizar SET CONSTRAINTS [ALL|cons] DEFERRED
Exemplo:

create table tp01 ( cod integer, cod2 char(1) );
alter table tp01 add constraint unique (cod) constraint ucons;
insert into tp01 values (1,"a");
insert into tp01 values (2,"b");
insert into tp01 values (3,"c");
insert into tp01 values (4,"d");
set constraints all deferred;
begin work;
update tp01 set cod = 4 where cod2 = "b" ;
update tp01 set cod = 1 where cod2 = "d" ;
update tp01 set cod = 2 where cod2 = "a" ;
commit work;
#  Codigo executado com sucesso!
#  Se nao fosse definido o set..deferred iria acusar
#  erro no 1o update.

Para maiores exemplos veja o artigo sobre UNIQUE INDEX e UNIQUE CONSTRAINTS

3
Média: 3 (1 vote)
Sua avaliação: Nenhum
Tags: