postgresql - Postgres 触发器语法

标签 postgresql jdbc triggers plpgsql

使用 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/

相关文章:

database - PostgreSQL 管理和监控

Java:MySQL查询。获取生成的 ID

postgresql - postgres触发器创建

mysql - 在触发器mysql中添加if else语句时出错

java - 使用DriverManager类设置jdbc拦截器

mysql - 插入时触发;代替 A 做 B

java - Postgres 中的 Bad Integer 2147483649(其 BIGINT 值)错误

postgresql - 使用基于 View 定义的默认值插入到 postgres View 中

python - Django-postgres : How to create an index on a JsonB field

mysql - 在 MYSQL 查询中使用 TOP 删除重复项会引发错误代码