From: | Erik Jones <erik(at)myemma(dot)com> |
---|---|
To: | Marc Evans <Marc(at)SoftwareHackery(dot)Com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: dynamic plpgsql question |
Date: | 2006-12-13 16:08:34 |
Message-ID: | 45802582.7050508@myemma.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Marc Evans wrote:
> Hi -
>
> I am struggling with a trigger function in plpgsql, and am hoping that
> someone on this list can't show me a way to do what I need.
>
> In the trigger, TG_ARGV[0] is the name of a column that I want to
> evaluate. This code shows the concept, though is not functional:
>
> CREATE OR REPLACE FUNCTION foo() RETURNS TRIGGER AS $$
> DECLARE
> column_name TEXT := TG_ARGV[0];
> data TEXT;
> BEGIN
> EXECUTE 'SELECT NEW.' || column_name INTO data;
> -- ...
> END;
> $$ LANGUAGE plpgsql;
>
> When I try to use that code, I receive:
>
> c3i=> insert into test_table values (1,1);
> ERROR: NEW used in query that is not in a rule
> CONTEXT: SQL statement "SELECT NEW.magic"
>
> How can I get the value of NEW.{column_name} (aka NEW.magic in this
> specific test case) into the variable data?
EXECUTE 'SELECT ' || NEW.column_name ';' INTO data;
--
erik jones <erik(at)myemma(dot)com>
software development
emma(r)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2006-12-13 16:12:46 | Re: Online index builds |
Previous Message | Tom Lane | 2006-12-13 16:08:17 | Re: A VIEW mimicing a TABLE |