sql - Postgres 触发器创建 - 错误 : no language specified SQL state: 42P13

标签 sql postgresql

我是触发器的新手。我正在尝试通过以下链接创建触发器 - http://www.postgresqltutorial.com/creating-first-trigger-postgresql/。但它给出了一些错误。代码块和错误如下。

代码块:

CREATE OR REPLACE FUNCTION log_last_name_changes()
  RETURNS trigger AS
$BODY$
BEGIN
 IF NEW.last_name <> OLD.last_name THEN
 INSERT INTO employee_audits(employee_id,last_name,changed_on)
 VALUES(OLD.id,OLD.last_name,now());
 END IF;
 
 RETURN NEW;
END;
$BODY$

错误:

 ERROR: no language specified
SQL state: 42P13

接下来我可以尝试什么?

最佳答案

试试这个方法:

CREATE OR REPLACE FUNCTION log_last_name_changes()
RETURNS trigger AS
$BODY$
BEGIN
IF NEW.last_name <> OLD.last_name THEN
INSERT INTO employee_audits(employee_id,last_name,changed_on)
VALUES(OLD.id,OLD.last_name,now());
END IF;

RETURN NEW;
END;
$BODY$

LANGUAGE plpgsql VOLATILE -- Says the function is implemented in the plpgsql language; VOLATILE says the function has side effects.
COST 100; -- Estimated execution cost of the function.

关于sql - Postgres 触发器创建 - 错误 : no language specified SQL state: 42P13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39607334/

相关文章:

sql - Postgresql:哪个更快:使用 OR 子句查询,还是两个单独的查询?

sql - 是否可以返回 WHERE IN 查询的缺失值

postgresql - 如何在 Rails 迁移中将列类型更改为间隔?

postgresql - 在 Heroku postgres 上设置语言环境

SQL:通过连接将一个表中的列链接到另一个表中的不同列

php - 来自具有相同列名的两个表的数据

mysql - JOIN 中的多个 COUNT()

sql - 使用 SQL 查找数据组中的缺失值

sql - 分布式postgresql ID冲突处理

javascript - 将 ajax 响应分配给全局变量