使用SQLFiddle,PostgreSQL 9.3.1。
我正在学习在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":
答案 0 :(得分:1)
由于Database Function giving an error - Postgresql
,我已经解决了这个问题似乎只是更改Scheme Window底部的查询终止符解决了这个问题。
答案 1 :(得分:0)
如果您复制粘贴代码,那么您会遇到一个简单的语法错误:ENDl
应该是函数定义的最后一行中的END;
。
否则,它对我来说很好。