如何在 POSTGRESQL 中的触发器函数中使用 BEGIN 函数



我正在使用POSTGRESQL-10并尝试创建一个TRIGGER函数。

我按照本教程中的示例进行操作 *http://www.postgresqltutorial.com/creating-first-trigger-postgresql/* 所以我创建了一个表:

CREATE TABLE employee_audits (
id SERIAL PRIMARY KEY,
employee_id INT NOT NULL,
last_name VARCHAR(40) NOT NULL,
changed_on TIMESTAMP(6) NOT NULL
)

然后我想创建以下触发器:

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$

但是,当我尝试执行此函数时,PostgreSQL由于BEGIN而向我返回了synthax错误。

无论如何,有人可以帮助我找出问题吗?

您从引用的函数中省略了所需的LANGUAGE子句,但您很可能说

LANGUAGE sql

而不是

LANGUAGE plpgsql

您指定的过程语言的语言验证程序无法识别函数体开头的BEGIN

最新更新