2014-10-01 110 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 2014-10-01 07:54:41