I am attempting to use the following code but I get -
"ERROR: NEW used in query that is not in a rule".
This implies that I create a rule for NEW and OLD (which I haven't needed
before).
Could someone point me to the proper synatx for such a rule?
BTW I noticed that Adrian used != . Is this symbol the same as <> ?
Bob
----- Original Message -----
From: "Adrian Klaver" <aklaver@xxxxxxxxxxx>
To: <pgsql-general@xxxxxxxxxxxxxx>
Cc: "Daniel Verite" <daniel@xxxxxxxxxxxxxxxx>; "Bob Pawley"
<rjpawley@xxxxxxx>
Sent: Monday, March 17, 2008 7:16 AM
Subject: Re: Updating
On Monday 17 March 2008 4:54 am, Daniel Verite wrote:
Adrian Klaver wrote:
> CREATE FUNCTION foo() RETURNS trigger AS
> $Body$
> BEGIN
> IF NEW.colname != OLD.colname THEN
> ..."Do something"..;
> RETURN whatever;
> ELSE
> RETURN NEW:
> END IF;
> END;
> $Body$ LANGUAGE plpgsql;
Beware that the "Do something" code path will not be taken when the
column goes from NULL to non-NULL or non-NULL to NULL.
In the general case where the column is nullable, better use "IS
DISTINCT FROM" instead of inequality:
IF NEW.colname IS DISTINCT FROM OLD.colname
Best regards,
--
Daniel
PostgreSQL-powered mail user agent and storage:
http://www.manitou-mail.org
Thanks for the heads up. This is a case I usually only remember when I
start
testing the function.
--
Adrian Klaver
aklaver@xxxxxxxxxxx
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general