Obrigado JotaComm

No firebird, eu tenho que fazer uma trigger para cada tabela. No Postgresql
eu percebi (se não estou enganado) que eu posso usar a mesma função de
trigger em várias tabelas e é isso que estou tentando fazer.

a minha função de trigger seria

create or replace function *gerar_id()* returns trigger as $$
begin
  --essa trigger define a chave primária
  --as tabelas que vão disparar essa trigger são tabela1, tabela2, tabela3,
... (muitas)
  --essas tabelas já existem e cada uma tem uma chave primária, do mesmo
tipo, mas com nomes diferentes

new.(nome da chave primária da tabela que está disparando essa trigger) =
uuid_generate_v4()

end
$$ language plpgsql;

Agora eu quero usar essa trigger em várias tabelas:

create tigger tabela1_tg before insert on tabela1
for each row execute *gerar_id()*;

create tigger tabela2_tg before insert on tabela2
for each row execute *gerar_id()*;

create tigger tabela3_tg before insert on tabela3
for each row execute *gerar_id()*;

Etc...

Em 9 de novembro de 2011 10:17, JotaComm <[email protected]> escreveu:

> Olá, Marllos
>
> Em 9 de novembro de 2011 10:15, Daniel Cristian Cruz <
> [email protected]> escreveu:
>
> Acredito que uma forma seja usando PL/Python:
>>
>> http://www.postgresql.org/docs/9.1/interactive/plpython-trigger.html
>>
>> Já procurei como fazer com PL/pgSQL, mas não encontrei como referenciar
>> dinamicamente o nome do atributo de chave primária.
>>
>> Você precisará consultar o catálogo, através da pg_attribute (attname) e
>> da pg_constraint (contype='p').
>>
>> Em 9 de novembro de 2011 10:02, Marllos <[email protected]>escreveu:
>>
>>>  Por favor, preciso de ajuda para revolver um problema. E se for
>>> possível gostaria de um exemplo.
>>>
>>> Em uma trigger, eu quero alterar a chave primária da tabela que dispara
>>> essa trigger, mas de forma dinâmica, por exemplo:
>>>
>>> new.(referencia dinâmica a chave primária da tebela) = valor.
>>>
>>
> Não entendi o que você deseja. Poderia colocar um exemplo prático da
> situação.
>
>>
>>> Obrigado.
>>>
>>> Marllos.
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>>
>> --
>> Daniel Cristian Cruz
>> クルズ クリスチアン ダニエル
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> Abraços
> --
> JotaComm
> http://jotacomm.wordpress.com
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a