On 09-04-2015 13:41, Douglas Fabiano Specht wrote: > Em 9 de abril de 2015 12:01, Matheus de Oliveira <[email protected]> > escreveu: > >> >> 2015-04-09 11:51 GMT-03:00 Douglas Fabiano Specht < >> [email protected]>: >> >>> com o nome do campo da PK da tabela, precisaria atribuir o valor do NEW >>> deste Campo para uma variável, >>> >>> valorpk:=new.campopk; >>> >>> tentei concatenar, converter, mas nada... >>> alguma dica? >>> >>> Postgres 9.4.1 com windows >>> >> >> É bem fácil fazer este tipo de operação com json/jsonb, exemplo: >> >> valor := to_json(NEW)->>campopk >> > > deu certo..obrigado >
Vc ainda pode usar essa PL pra fazer isso que precisa:
CREATE OR REPLACE FUNCTION get_field_from_record(p_record ANYELEMENT,
p_field TEXT) RETURNS TEXT as $$
DECLARE
use_sql TEXT;
reply TEXT;
BEGIN
use_sql := 'SELECT ($1).[FIELD]';
use_sql := replace( use_sql, '[FIELD]', quote_ident(p_field) );
EXECUTE use_sql INTO reply using p_record;
RETURN reply;
END;
$$ language plpgsql;
Dai vc pode usar assim:
...
valor := get_field_from_record(NEW, 'nome_do_campo');
...
É uma PL antiga, dica do Pavel Stehule... até olhando pra ela dá pra dar
uma otimizada ali usando a função "format" pra criar o SQL dinâmico.
Uso há muitos anos ela. ;-)
Att,
--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
signature.asc
Description: OpenPGP digital signature
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
