Re: Strugging with NEW and OLD records.

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: Strugging with NEW and OLD records.
Дата
Msg-id 43845DF5.4020401@archonet.com
обсуждение исходный текст
Ответ на Strugging with NEW and OLD records.  (Script Head <scripthead@gmail.com>)
Список pgsql-general
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

В списке pgsql-general по дате отправления:

Предыдущее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: PREPARE in bash scripts
Следующее
От: "Rick Schumeyer"
Дата:
Сообщение: Re: tsearch2: more than one index per table?