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
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a