Postgresql Postgres触发器语法
使用SQLFIDLE,PostgreSQL 9.3.1 我正在学习在PostgreSQL中定义触发器,在做了一些研究之后,我发现了以下几点: Postgres中的触发器不同于MYSQL。在Postgres中,您必须创建一个返回触发器的函数,而在MySQL中,您只需创建一个触发器即可。这就是我想到的: 在插入员工时,我们要更新部门总工资Postgresql Postgres触发器语法,postgresql,jdbc,triggers,plpgsql,Postgresql,Jdbc,Triggers,Plpgsql,使用SQLFIDLE,PostgreSQL 9.3.1 我正在学习在PostgreSQL中定义触发器,在做了一些研究之后,我发现了以下几点: Postgres中的触发器不同于MYSQL。在Postgres中,您必须创建一个返回触发器的函数,而在MySQL中,您只需创建一个触发器即可。这就是我想到的: 在插入员工时,我们要更新部门总工资 CREATE FUNCTION update_sal() RETURNS TRIGGER AS $$ BEGIN IF NEW.dno IS NOT NULL
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":
如果复制粘贴的代码,则会出现一个简单的语法错误:
ENDl
应该是END代码>在函数定义的最后一行
否则,我会觉得不错。多亏了
似乎只要更改Scheme窗口底部的查询终止符就可以解决这个问题 感谢你对克里斯托夫的评论,不过即使是在结尾;改变了我仍然得到同样的错误。。