使用SQLFiddle,PostgreSQL 9.3.1。Postgres触发器语法
我学习PostgreSQL中定义的触发器,并做了一些研究之后,我发现了以下工作:
触发的Postgres是从MySQL不同。在Postgres中你必须创建一个函数RETURNS TRIGGER
,在MySQL中你可以创建一个触发器。所以这就是我想出的:
对于员工插入,我们要更新部门总工资。
CREATE FUNCTION update_sal() RETURNS TRIGGER AS $$
BEGIN
IF NEW.dno IS NOT NULL THEN
UPDATE Department SET Total_sal = total_sal + NEW.salary
WHERE department.dno = NEW.dno;
END IF;
RETURN NULL;
END;
$$ Language plpgsql;
CREATE TRIGGER updateInsert
AFTER INSERT ON Employee
FOR EACH ROW
EXECUTE PROCEDURE update_sal();
而且我发现了以下错误:
Schema Creation Failed: ERROR: unterminated dollar-quoted string at or near "$$
BEGIN IF NEW.dno IS NOT NULL THEN UPDATE Department
SET Total_sal = total_sal +NEW.salary WHERE department.dno = NEW.dno":
[相关问题更多的细节和演示](http://stackoverflow.com/questions/22747225/exceptions-when-creating-a-trigger-in-postgresql-9-1/22748778#22748778)。 –