Mr J.L. wrote:

>    Em uma tabela tenho uns 10 campos, mas desses, 3 campos text nao podem ter 
> o mesmo conteudo, porem, os tres campos podem ser nulos.
>    Qual seria a melhor estrategia, CHECK OU TRIGGER? (tentei criar um check 
> mas acho q faltou criatividade p/ conseguir a solucao ou nao é possivel 
> mesmo) 
>    Caso a melhor opcao seja a trigger, estou usando "TCL", qual seria o 
> retorno correto p/ nao executar o "UPDATE" ou "INSERT". 
> 
O aconselhável para um teste trivial como esse seria o uso do CHECK [1]. 
  Vale ressaltar que 'true' e 'unknown' fazem com que a avaliação da 
expressão tenha sucesso (último caso).

test=# create table foo (a text, b text, c text, check(a <> b OR b <> c));
CREATE TABLE
test=# insert into foo (a,b,c) values('bar', 'bat', 'baz');
INSERT 0 1
test=# insert into foo (a,b,c) values('bar', 'bar', 'bar');
ERRO:  novo registro da relação "foo" viola restrição de verificação 
"foo_check"
test=# insert into foo (a,b,c) values('bar', 'bar', 'baz');
INSERT 0 1
test=# insert into foo (a,b,c) values('bar', 'bar', null);
INSERT 0 1


[1] http://www.postgresql.org/docs/8.3/static/sql-createtable.html


-- 
   Euler Taveira de Oliveira
   http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a