PostgreSQL中的ALTER TRIGGER命令

SMW*_*SMW 4 sql postgresql ddl triggers

我在Postgres 9.3数据库中有一个触发器,其定义如下:

CREATE TRIGGER trig
  AFTER UPDATE OR DELETE
  ON tab2
  FOR EACH ROW
  EXECUTE PROCEDURE proc3();
Run Code Online (Sandbox Code Playgroud)

我想将触发器更改为:

AFTER INSERT OR UPDATE OR DELETE
Run Code Online (Sandbox Code Playgroud)

手册上ALTER TRIGGER没有说明如何做。

我想更改触发器而不丢弃它。那可能吗?

e4c*_*4c5 5

抱歉,无法以这种方式更改触发器。触发器不存在OR REPLACE子句。但是,这很少出现问题,因为在Postgresql中,DDL语句可以包装在事务中。

BEGIN;
DROP TRIGGER IF EXISTS trig on tab2;
CREATE TRIGGER trig
  AFTER INSERT OR UPDATE OR DELETE
  ON tab2
  FOR EACH ROW
  EXECUTE PROCEDURE proc3();

COMMIT;
Run Code Online (Sandbox Code Playgroud)