“创建或替换触发器”在 AWS RDS/Postgres 上不可用

Tho*_*mas 1 postgresql amazon-web-services amazon-rds

我有以下内容:

CREATE OR REPLACE TRIGGER trigger_commands
    AFTER INSERT ON commands
    FOR EACH ROW EXECUTE PROCEDURE on_commands_change();
Run Code Online (Sandbox Code Playgroud)

它可以在本地 Postgres 实例上运行,但在 AWS 上失败:

[42601] 错误:“TRIGGER”处或附近的语法错误

但是,如果我删除“或替换”部分:

CREATE TRIGGER trigger_commands
    AFTER INSERT ON commands
    FOR EACH ROW EXECUTE PROCEDURE on_commands_change();
Run Code Online (Sandbox Code Playgroud)

然后 RDS 接受它。这是为什么?每次代码重新启动时更新触发器的最佳方法是什么?

cog*_*sum 5

这很可能是 Postgresql 版本不匹配,CREATE OR REPLACE TRIGGER仅适用于 Postgresql 14(请参阅文档1413)。

我建议使用DROP TRIGGER IF EXISTSthenCREATE TRIGGER来实现向后兼容性。