在创建触发器时 FUNCTION 处或附近的 PostgreSQL 语法错误

Mar*_*ton 6 postgresql database-trigger

我在运行 Ubuntu 服务器 18.04 的新机器上安装了 postgresql 和 postgresql-plpython-10(使用 apt),并且我已经将 Postgresql 数据库(使用 提取pg_dumpall)从另一台机器恢复到新机器(Linux)上。

我检查了数据库中存在trackspreadsheetnztplpy函数并且存在表nztgsheet。我在旧机器上重新运行了这个功能,它运行得很好。我查plpythonu安装使用psql的命令在新机器上:\dL

SQL 错误:

错误:“FUNCTION”第 1 行或附近的语法错误:...H ROW WHEN (OLD.* IS DISTINCT FROM NEW.*) EXECUTE FUNCTION t... ^

在声明中: CREATE TRIGGER trackspreadsheetnzt AFTER UPDATE ON nztgsheet FOR EACH ROW WHEN (OLD.* IS DISTINCT FROM NEW.*) EXECUTE FUNCTION trackspreadsheetnztplpy();

我希望触发器函数可以工作,但它会引发语法错误。

Nic*_*nes 10

语句的EXECUTE FUNCTION语法CREATE TRIGGER是在Postgres 11中引入的。

Postgres 10 中,您需要改为说EXECUTE PROCEDURE

这个语法在 Postgres 11 中被弃用,引入了procedure,它不同于函数,不能用于实现触发器。