Thread: trigger parameters, what am I doing wrong ??

trigger parameters, what am I doing wrong ??

From
"Marcin Krawczyk"
Date:
<div dir="ltr">Hi guys. I'm trying to pass a parameter to trigger procedure but it's not working and I have no idea why
sinceit looks pretty ok. Here's what I do :<br /><br />CREATE OR REPLACE FUNCTION test_proc()<br />   RETURNS "trigger"
AS<br/>$BODY$<br />DECLARE<br />chk     boolean;<br />par    integer := TG_ARGV[0];<br /><br />BEGIN<br />RAISE NOTICE
'TG_ARGV= %, TG_NARGS = %, par = %', TG_ARGV[0], TG_NARGS, par;<br /><br />-- [...] some computations<br /><br />RETURN
NEW;<br/>END;<br /><br />$BODY$<br />  LANGUAGE 'plpgsql' VOLATILE;<br /><br />CREATE TRIGGER jks_test_proc_tg<br /> 
AFTERUPDATE<br />  ON test_table<br />  FOR EACH ROW<br />  EXECUTE PROCEDURE test_proc(42);<br /><br />And here's what
RAISENOTICE looks like : NOTICE:  TG_ARGV = <NULL>, TG_NARGS = 0, par = <NULL><br /><br />What's wrong with
it?? I'm running 8.1.4<br /><br />regards<br />mk<br /></div> 

Re: trigger parameters, what am I doing wrong ??

From
Tom Lane
Date:
"Marcin Krawczyk" <jankes.mk@gmail.com> writes:
> And here's what RAISE NOTICE looks like : NOTICE:  TG_ARGV = <NULL>,
> TG_NARGS = 0, par = <NULL>
> What's wrong with it ?? I'm running 8.1.4

Works for me:

regression=# insert into test_table values(1);
INSERT 0 1
regression=# update test_table set f1 = 2;
NOTICE:  TG_ARGV = 42, TG_NARGS = 1, par = 42
UPDATE 1

You need to show a more complete example of what you're doing.
        regards, tom lane


Re: trigger parameters, what am I doing wrong ??

From
"Bart Degryse"
Date:
With some version (but I don't remember which) I had the same problem.
I solved it by assigning TG_ARGV[0] to a variable and use the variable in the RAISE NOTICE.


>>> Tom Lane <tgl@sss.pgh.pa.us> 2008-10-09 19:22 >>>
"Marcin Krawczyk" <jankes.mk@gmail.com> writes:
> And here's what RAISE NOTICE looks like : NOTICE:  TG_ARGV = <NULL>,
> TG_NARGS = 0, par = <NULL>
> What's wrong with it ?? I'm running 8.1.4

Works for me:

regression=# insert into test_table values(1);
INSERT 0 1
regression=# update test_table set f1 = 2;
NOTICE:  TG_ARGV = 42, TG_NARGS = 1, par = 42
UPDATE 1

You need to show a more complete example of what you're doing.

regards, tom lane

--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql