2008/7/11 Mr J.L. <[EMAIL PROTECTED]>: > Euler, > create table foo (a text, b text, c text, check( (a <> b and b <> c and a > <> c) )); > > fiz alguns teste e o check acima deu certo, parece que atendeu a questao. > Agora o problema é que existem milhares de registros que deveriam ser > alterados p/ que esse check tenha efeito (p/ nao dar erro na criacao do > check). > > Creio que no postgresql nao tem uma opcao igual tem no "oracle" que um > check pode ser criado e só serao afetados os registros apartir da criacao. > Se tivesse isso iria ser show em!
Ter não tem, mas se seus registros tiverem um *timestamp *é só acrescentar mais isso no check... ;) Ex.: CREATE TABLE foo (a text, b text, c text, d DATE NOT NULL DEFAULT now() check( d < '2008-07-11'::date OR((a <> b and b <> c and a <> c) )); > > > mas desde ja, agradeço a ajuda. > > > --- Em sex, 11/7/08, Euler Taveira de Oliveira <[EMAIL PROTECTED]> > escreveu: > > > De: Euler Taveira de Oliveira <[EMAIL PROTECTED]> > > Assunto: Re: [pgbr-geral] duvidas trigger > > Para: [EMAIL PROTECTED], "Comunidade PostgreSQL Brasileira" < > pgbr-geral@listas.postgresql.org.br> > > Data: Sexta-feira, 11 de Julho de 2008, 11:35 > > 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/ > > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a > sua cara @ymail.com ou @rocketmail.com. > http://br.new.mail.yahoo.com/addresses > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- William Leite Araújo Analista de Banco de Dados - QualiConsult
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral