如果触发器不存在,我该如何创建触发器?
当我尝试使用“CREATE OR REPLACE”语句时,会出现语法错误,因此我想寻找一种测试触发器是否存在的方法。
我可以通过执行“SELECT * FROM pg_trigger”来查询所有触发器,但我相信有更适合的方法。
谢谢。
如果触发器不存在,我该如何创建触发器?
当我尝试使用“CREATE OR REPLACE”语句时,会出现语法错误,因此我想寻找一种测试触发器是否存在的方法。
我可以通过执行“SELECT * FROM pg_trigger”来查询所有触发器,但我相信有更适合的方法。
谢谢。
Postgres 可以有条件地删除触发器 - 请参阅文档。在创建触发器之前这样做,然后它总是有效的。
DROP TRIGGER IF EXISTS mytrigger ON mytable;
正如Jack在评论中指出的那样,这个功能只在8.2版本之后才可用;尽管已经过去了四年多,但它应该在您的版本中可用。
CREATE TRIGGER (NameOfTrigger) AFTER INSERT OR UPDATE ON (NameOfTable)
DROP TRIGGER IF EXISTS (NameOfTrigger) ON (NameOfTable);