Dynamic Assignment
Hi All,
In a trigger function, I'm trying to set the variable "pkey" to be one of
the columns
in the automatic variable "NEW". Which one depends on some metadata that
is available at
run-time. I'm having a hard time using an automatic variable in a dynamic
execute command.
I get the error "missing FROM-clause entry for table "new""
Here's my function
create or replace function refresh_row () returns trigger as $$
declare
pkey bigint;
begin
execute 'select NEW.esid' into pkey;
end;
$$ language plpgsql
Obviously this particular code could be re-written as a simple assignment
but I need the
"esid" part to be dynamic. Is this possible?
Cheers,
Andy
--
Andy Chambers
2011/3/23 Andy Chambers <achambers@mcna.net>:
Hi All,
In a trigger function, I'm trying to set the variable "pkey" to be one of
the columns
in the automatic variable "NEW". Which one depends on some metadata that is
available at
run-time. I'm having a hard time using an automatic variable in a dynamic
execute command.I get the error "missing FROM-clause entry for table "new""
Here's my function
create or replace function refresh_row () returns trigger as $$
declare
pkey bigint;
begin
execute 'select NEW.esid' into pkey;
end;
$$ language plpgsqlObviously this particular code could be re-written as a simple assignment
but I need the
"esid" part to be dynamic. Is this possible?
yes, it's possible
EXECUTE 'SELECT $1.' || quote_ident(attr_name) INTO pkey USING NEW;
Regards
Pavel Stehule
http://okbob.blogspot.com/2008/06/execute-using-feature-in-postgresql-84.html
Show quoted text
Cheers,
Andy--
Andy Chambers--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general