我在运行Ubuntu服务器18.04的新计算机上安装了postgresql和postgresql-plpython-10(使用apt)
并且我已经将Postgresql数据库(使用pg_dumpall
提取)从另一台机器恢复到新机器(Linux)。
我检查了数据库中是否存在trackspreadsheetnztplpy函数,并且表nztgsheet存在。我在旧机器上重新运行了该功能,并且运行良好。我使用psql命令\dL
检查了新机器上是否安装了plpythonu。
SQL错误:
错误:“ FUNCTION”处或附近的语法错误 第1行:...(当旧(*。与新。*不同)时)执行功能... ^
在声明中:
CREATE TRIGGER trackspreadsheetnzt AFTER UPDATE ON nztgsheet FOR EACH ROW WHEN (OLD.* IS DISTINCT FROM NEW.*) EXECUTE FUNCTION trackspreadsheetnztplpy();
我希望触发器函数能够正常工作,但它会引发语法错误。
答案 0 :(得分:2)
Postgres 11中引入了EXECUTE FUNCTION
语句的CREATE TRIGGER
语法。
在Postgres 10中,您需要说EXECUTE PROCEDURE
。
此语法在Postgres 11中由于引入procedures而被弃用,该nested exception is org.apache.ibatis.binding.BindingException: Parameter 'tagId' not found. Available parameters are [0, 1, param1, param2]与函数不同,不能用于实现触发器。