Thread: "OLD used in query that is not in a rule"

"OLD used in query that is not in a rule"

From
"Gauthier, Dave"
Date:

I get... "OLD used in query that is not in a rule" when trying to ref, for example, OLD.tblcol1, from inside a stored procedure.  Is this saying you cannot use OLD.* (or NEW.* I suppose) unless it's from within a trigger function (returns type "trigger")?

 

If so, is there some way to tap this info given that the stored procedure is running as part of a check constraint definition? 

 

Thanks for any help.

 

 

Re: "OLD used in query that is not in a rule"

From
Tom Lane
Date:
"Gauthier, Dave" <dave.gauthier@intel.com> writes:
> I get... "OLD used in query that is not in a rule" when trying to ref, for example, OLD.tblcol1, from inside a stored
procedure. Is this saying you cannot use OLD.* (or NEW.* I suppose) unless it's from within a trigger function (returns
type"trigger")? 

Certainly.  You'd have to pass the field (or whole record) as a
parameter.  It's not some kind of magic global variable, it's
a predefined local variable in a trigger function (or rule).

            regards, tom lane

Re: "OLD used in query that is not in a rule"

From
"Gauthier, Dave"
Date:
OK, and understood.
And yes, I thought it was a global.

Thanks Tom.

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Monday, March 26, 2012 10:52 AM
To: Gauthier, Dave
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] "OLD used in query that is not in a rule"

"Gauthier, Dave" <dave.gauthier@intel.com> writes:
> I get... "OLD used in query that is not in a rule" when trying to ref, for example, OLD.tblcol1, from inside a stored
procedure. Is this saying you cannot use OLD.* (or NEW.* I suppose) unless it's from within a trigger function (returns
type"trigger")? 

Certainly.  You'd have to pass the field (or whole record) as a
parameter.  It's not some kind of magic global variable, it's
a predefined local variable in a trigger function (or rule).

            regards, tom lane