使用 SQLFiddle、PostgreSQL 9.3.1。
我正在学习在 PostgreSQL 中定义触发器,经过一些研究后我发现了以下内容:
Postgres 中的触发器与 MYSQL 不同。在 Postgres 中,您必须创建一个 RETURNS TRIGGER
函数,而在 MySQL 中,您可以只创建一个触发器。所以这就是我想出的:
在 Employee Insert 上,我们要更新 Departments Total Salary。
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":
最佳答案
感谢 Database Function giving an error - Postgresql,我已经解决了这个问题
似乎只需更改方案窗口底部的查询终止符即可解决此问题。
关于postgresql - Postgres 触发器语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23165055/