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

Responder a