如果触发器不存在,我该如何创建它呢?
当我创建或替换时,我收到语法错误,所以我正在寻找一种方法来测试是否存在触发器。
我总是可以从pg_trigger中选择*,但我确信有更合适的方法。
由于
答案 0 :(得分:17)
Postgres可以有条件地放下触发器 - 请参阅the docs。在创建触发器之前执行,然后它将始终有效。
DROP TRIGGER IF EXISTS mytrigger ON mytable;
正如杰克在评论中指出的那样,这个功能自8.2以来才可用;这已经超过四年了,所以它应该在你的版本中可用。
答案 1 :(得分:0)
CREATE TRIGGER (NameOfTrigger) AFTER INSERT OR UPDATE ON (NameOfTable)
DROP TRIGGER IF EXISTS (NameOfTrigger) ON (NameOfTable);