Skip site navigation (1) Skip section navigation (2)

Re: basic trigger using OLD not working?

From: Sven Willenberger <sven(at)dmv(dot)com>
To: pgsql-general(at)postgresql(dot)org
Cc: Rick(dot)Casey(at)colorado(dot)edu
Subject: Re: basic trigger using OLD not working?
Date: 2005-02-27 04:50:57
Message-ID: 422151B1.7050602@dmv.com (view raw or flat)
Thread:
Lists: pgsql-general

Rick(dot)Casey(at)colorado(dot)edu presumably uttered the following on 02/25/05 19:14:
> Yes, thank you, I corrected my function from statement level to row level.
> This did get rid of the error message. However, I still get no output from
> an OLD variable that should contain data: see the test variable in the
> simple case below.
> 
> How else can I test OLD variables? This is the simplest test case I can
> think of. Any suggestions would be appreciated!
> 
> Thanks,
> Rick
> 
> 
>>I think you have created a statement level trigger (If they existed in
>>7.4.7...)  by not including FOR EACH ROW in your create statement.  In
>>statement level triggers, there is no OLD or NEW.
>>
>>
>>>>>Rick Casey <rick(dot)casey(at)colorado(dot)edu> 02/24/05 1:22 PM >>>
>>
>>Hello all,
>>
>>I am trying to a simple thing: create a log history of deletes, and
>>updates; but which I am having trouble getting to work in PG 7.4.7
>>(under Debian Linux 2.6.8).
>>
>>I have reduced my code to the following trivial case:
>>
>>Here is the code that creates the delete trigger:
>>create trigger PEDIGREES_hist_del_trig
>>AFTER DELETE
>>on PEDIGREES
>>EXECUTE PROCEDURE logPedigreesDel();
>>
>>
>>Here is the trigger code: (famindid is an integer field in the Pedigrees
>>
>>table):
>>
>>CREATE OR REPLACE FUNCTION logPedigreesDel() RETURNS TRIGGER AS '
>>DECLARE
>>    test integer;
>>begin
>>    test := OLD.famindid;
>>    RAISE EXCEPTION ''OLD.famindid = '', test;
>>    return OLD;
>>end;
>>' LANGUAGE plpgsql;
>>
>>
>

Need a place holder for your variable in your RAISE expression (like a 
printf syntax):

	RAISE EXCEPTION ''OLD.famindid = %'', test;

btw, if you just want to see the variable without having your function 
bail on you, try RAISE NOTICE ''OLD.famindid = %'', test;

Sven

In response to

Responses

pgsql-general by date

Next:From: Julian ScarfeDate: 2005-02-27 10:58:16
Subject: Re: postgresql 8.0 advantages
Previous:From: Christopher BrowneDate: 2005-02-27 02:12:54
Subject: Re: postgresql 8.0 advantages

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group