Search Postgresql Archives

Re: Strugging with NEW and OLD records.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Script Head wrote:
I am a newbie to the stored proc. game and this is eating my brain.

The error message is accurate but not useful...

CREATE TABLE name(first VARCHAR(32) NULL,last VARCHAR(32) NULL, extra
VARCHAR(32) NULL );

CREATE OR REPLACE FUNCTION update_name() RETURNS opaque AS '
    DECLARE
    BEGIN
        NEW.extra:=NEW.first;
        RETURN NEW;
    END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER update_name_extra BEFORE INSERT
ON name
EXECUTE PROCEDURE update_name();

The CREATE TRIGGER is the problem...

INSERT INTO name(first,last) VALUES('script','head');

ERROR:  record "new" is not assigned yet
DETAIL:  The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT:  PL/pgSQL function "update_name" line 4 at assignment

You need to add "FOR EACH ROW" before "EXECUTE PROCEDURE" otherwise you have a statement-level trigger which doesn't give you access to NEW/OLD.

HTH
--
  Richard Huxton
  Archonet Ltd


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux