Postgresql触发函数语法错误

时间:2014-10-01 07:20:25

标签: sql postgresql triggers aggregate-functions

嗨这是我在pgAdmin3 postgresql上的第一个触发器功能,我试过并放弃了,我想添加一个触发器来填充item_sold表,如果一个项目已售出。我正在为etrading网站做评估。

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()
                                     ^

1 个答案:

答案 0 :(得分:2)

您的CREATE TRIGGER语法无效。你误解了它是如何工作的。

触发创建分两步完成:

  • 创建实现触发逻辑的函数;然后
  • 创建一个在发生事件时运行该功能的触发器

有关详细信息和示例,请参阅PostgreSQL手册:

你似乎试图将两者混合成一个步骤。那样不行。你需要:

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

CREATE TRIGGER ...;