"create or replace trigger"在 AWS RDS/Postgres 上不可用



我有以下内容:

CREATE OR REPLACE TRIGGER trigger_commands
AFTER INSERT ON commands
FOR EACH ROW EXECUTE PROCEDURE on_commands_change();

它在本地Postgres实例上工作,但在AWS上失败:

[42601] ERROR: "TRIGGER"语法错误

但是,如果我删除'OR REPLACE'部分:

CREATE TRIGGER trigger_commands
AFTER INSERT ON commands
FOR EACH ROW EXECUTE PROCEDURE on_commands_change();

则RDS接受它。为什么呢?在每次代码重启时更新触发器的最佳方法是什么?

这很可能是Postgresql版本不匹配,CREATE OR REPLACE TRIGGER只在Postgresql 14上工作(参见文档14和13)。

我建议使用DROP TRIGGER IF EXISTS然后CREATE TRIGGER来向后兼容。

最新更新