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