triggers vs. 'NEW in non-rule query' -- SOLVED?
triggers vs. 'NEW in non-rule query' -- SOLVED?
От:
will trillich <will@serensoft.com>
Дата:
On Sat, Mar 03, 2001 at 11:50:03PM -0500, Ron Peterson wrote: > > Could you provide an example of what *doesn't* work? > i THINK i've got it! MWAAH HA HA... i follow the example from the postgresql-doc/html/user/c4*40.html document and define a function to be called via TRIGGER... CREATE FUNCTION easy() RETURNS OPAQUE AS ' DECLARE x CHAR(1) := NEW.somefield FROM 1 FOR 1; BEGIN -- whatever, yada yada, bada bing bada boom RETURN NEW; END; ' language 'plpgsql'; and this results in "ERROR: use of NEW in non-rule procedure" when actually called via TRIGGER. i change it instead to CREATE FUNCTION easy() RETURNS OPAQUE AS ' DECLARE x CHAR(1); -- no := assignment here BEGIN x := NEW.somefield FROM 1 FOR 1; -- whatever, yada yada, bada bing bada boom RETURN NEW; END; ' language 'plpgsql'; and suddenly all is right with the world. so i can't refer to the NEW (or probably OLD) pseudotables WITHIN THE DECLARE section. apparently. Q: is this a bug? is this a feature? -- It is always hazardous to ask "Why?" in science, but it is often interesting to do so just the same. -- Isaac Asimov, 'The Genetic Code' will@serensoft.com http://groups.yahoo.com/group/newbieDoc -- we need your brain! http://www.dontUthink.com/ -- your brain needs us!
Re: triggers vs. 'NEW in non-rule query' -- SOLVED?
От:
Jan Wieck <janwieck@Yahoo.com>
Дата:
will trillich wrote:
>
> i THINK i've got it! MWAAH HA HA...
>
Congrats
> i follow the example from the postgresql-doc/html/user/c4*40.html
> document and define a function to be called via TRIGGER...
>
> CREATE FUNCTION easy() RETURNS OPAQUE AS '
> DECLARE
> x CHAR(1) := NEW.somefield FROM 1 FOR 1;
> BEGIN
> -- whatever, yada yada, bada bing bada boom
> RETURN NEW;
> END;
> ' language 'plpgsql';
Grmpf - exactly that's missing in the "#option dump" output -
the calculation of default values for variable
initialization. I was looking at your log-snippent over and
over again and couldn't see it :-)
>
> and this results in "ERROR: use of NEW in non-rule procedure"
> when actually called via TRIGGER. i change it instead to
>
> CREATE FUNCTION easy() RETURNS OPAQUE AS '
> DECLARE
> x CHAR(1); -- no := assignment here
> BEGIN
> x := NEW.somefield FROM 1 FOR 1;
> -- whatever, yada yada, bada bing bada boom
> RETURN NEW;
> END;
> ' language 'plpgsql';
>
> and suddenly all is right with the world. so i can't refer to the
> NEW (or probably OLD) pseudotables WITHIN THE DECLARE section.
> apparently.
>
> Q: is this a bug? is this a feature?
A missing feature, and something that should be on 7.2's
TODO.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck@Yahoo.com #
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
Re: triggers vs. 'NEW in non-rule query' -- SOLVED?
От:
Bruce Momjian <pgman@candle.pha.pa.us>
Дата:
> > apparently. > > > > Q: is this a bug? is this a feature? > > A missing feature, and something that should be on 7.2's > TODO. > Please supply a TODO line. I can't figure it out. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026