2014-10-01 5 views
2

Привет, это моя первая функция триггера на pgAdmin3 postgresql, я попытался и отказался, я хочу добавить триггер, чтобы заполнить таблицу item_sold, если предмет был продан. Я делаю оценку для сайта травления.Ошибка синтаксиса функции триггера Postgresql

CREATE TRIGGER trPopulateItemSold() 
AFTER UPDATE ON tradebay.item FOR EACH ROW  
RETURN trigger AS $populate$ 
BEGIN 
INSERT INTO item_sold (transaction_id, quantity, buyer_id, item_id) VALUES (transaction_id, NEW.quantity, buyer_id, NEW.item_id); 
END; 
LANGUAGE plpgsql; 

ошибка SQL:

ERROR: syntax error at or near "(" 
LINE 1: CREATE TRIGGER trPopulateItemSold() 
            ^

ответ

2

Ваш синтаксис CREATE TRIGGER является недействительным. Вы не понимаете, как это работает. Создание триггера

выполняется в два этапа:

  • Создайте функцию, которая реализует логику триггера; затем
  • Создать триггер, который запускает функцию, когда что-то происходит

Смотрите руководство по PostgreSQL Подробности и примеры:

Вы, кажется, пытается разомните их вместе в один шаг. Это не будет работать. Вам необходимо:

CREATE OR REPLACE FUNCTION .... RETURNS trigger AS $$ 
$$; 

CREATE TRIGGER ...; 
+0

Спасибо, Крейг, который имеет больше смысла сейчас, приветствует – Vasko

Смежные вопросы