2013/7/12 Douglas Fabiano Specht <[email protected]> > > > > Em 12 de julho de 2013 12:07, Flavio Henrique Araque Gurgel < > [email protected]> escreveu: > > Osvaldo, >>> foi meu primeiro teste tinha feito assim: >>> >>> create or replace rule protect_double as >>> on INSERT to test >>> where exists ( >>> select 1 from dah.test res >>> where new.tipoacesso='R' and new.numero=res.numero) >>> do instead select erroDouble(); >>> >> >> Eu recomendo um gatilho (trigger) do tipo BEFORE INSERT que permite que >> você faça uma função bem mais elaborada do que uma regra. >> >> []s >> >> ______________________________**____ >> Flavio Henrique A. Gurgel >> Líder de Projetos Especiais >> Consultoria, Projetos & Treinamentos 4LINUX >> Tel1: +55-11.2125-4747 ou 2125-4748 >> www.4linux.com.br >> email: [email protected] >> ______________________________ >> FREE SOFTWARE SOLUTIONS >> >> ______________________________**_________________ >> pgbr-geral mailing list >> [email protected].**org.br<[email protected]> >> https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geral<https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral> >> > > > Flavio > obrigado pela resposta, pois é ja estava pensando nisso. > o estranho que estou segundo até um exemplo da internet. > > CREATE OR REPLACE RULE db_table_ignore_duplicate_inserts AS > ON INSERT TO insert_test > WHERE EXISTS ( > SELECT 1 > FROM insert_test > WHERE id = NEW.id > ) > DO INSTEAD NOTHING; > > > A unica diferença é que tenho 2 comparações no where, e pelos testes ele > sempre valida a primeira new.tipoacesso='R' e a segunda que é um and > new.numero=res.numero mesmo sendo falsa ele ignora, > > -- > > Douglas Fabiano Specht >
Pessoal, voltando a esse assunto, verifiquei que o problema está na opção de chamar a funcao de mensagem de erro: DO INSTEAD SELECT errodouble(); se eu deixar como DO INSTEAD NOTHING funciona, ou seja sempre chama a função mesmo retornando false, ou true. Alguem sabe como posso fazer da a mensagem ao usuário utilizando o uma função? -- Douglas Fabiano Specht
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
