Функции и триггеры PostgreSQL - PullRequest
       13

Функции и триггеры PostgreSQL

7 голосов
/ 10 января 2012

Я пробую функции и триггеры int postgreSQL, однако у меня возникает проблема, когда функция срабатывает, она выдает мне ошибку

ОШИБКА: управление достигло конца процедуры триггера без ВОЗВРАТА

эта конкретная процедура только выполняет вставку в команду, поэтому я не понимаю, почему она требует возврата

это сценарий:

CREATE OR REPLACE FUNCTION forest_aud_func() returns trigger as $tree_stamp$ 
BEGIN
    insert into Audit values('k',124,'l');
END;
$tree_stamp$
LANGUAGE plpgsql;

create trigger forest_aud_ins after insert on forest
for each row execute procedure forest_aud_func()

insert into forest values('Blue',1600,'Malta','Health Ltd')

1 Ответ

16 голосов
/ 10 января 2012

Сообщение об ошибке говорит вам все. Вам нужно сделать ВОЗВРАТ из функции триггера:

CREATE OR REPLACE FUNCTION forest_aud_func() returns trigger as $tree_stamp$ 
BEGIN
    insert into Audit values('k',124,'l');
    return new;
END;
$tree_stamp$
LANGUAGE plpgsql;

С инструкция :

Функция триггера должна возвращать либо NULL, либо значение записи / строки, имеющее точно структуру таблицы, для которой сработал триггер.

...