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