PostgreSQL 中的 ALTER TRIGGER 命令
ALTER TRIGGER command in PostgreSQL
我在 Postgres 9.3 数据库中有一个触发器,定义如下:
CREATE TRIGGER trig
AFTER UPDATE OR DELETE
ON tab2
FOR EACH ROW
EXECUTE PROCEDURE proc3();
我想将触发器更改为:
AFTER INSERT OR UPDATE OR DELETE
The manual on ALTER TRIGGER
没有解释怎么做。
我想在不丢弃触发器的情况下更改触发器。这可能吗?
抱歉,无法以这种方式更改触发器。 triggers 不存在 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;
即将推出的 PostgreSQL 版本将支持 CREATE OR REPLACE
语法:
CREATE OR REPLACE TRIGGER will either create a new trigger, or replace an existing trigger
To replace the current definition of an existing trigger, use CREATE OR REPLACE TRIGGER, specifying the existing trigger's name and parent table. All other properties are replaced.
CREATE OR REPLACE TRIGGER trig
AFTER INSERT OR UPDATE OR DELETE
ON tab2
FOR EACH ROW
EXECUTE PROCEDURE proc3();
我在 Postgres 9.3 数据库中有一个触发器,定义如下:
CREATE TRIGGER trig
AFTER UPDATE OR DELETE
ON tab2
FOR EACH ROW
EXECUTE PROCEDURE proc3();
我想将触发器更改为:
AFTER INSERT OR UPDATE OR DELETE
The manual on ALTER TRIGGER
没有解释怎么做。
我想在不丢弃触发器的情况下更改触发器。这可能吗?
抱歉,无法以这种方式更改触发器。 triggers 不存在 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;
即将推出的 PostgreSQL 版本将支持 CREATE OR REPLACE
语法:
CREATE OR REPLACE TRIGGER will either create a new trigger, or replace an existing trigger
To replace the current definition of an existing trigger, use CREATE OR REPLACE TRIGGER, specifying the existing trigger's name and parent table. All other properties are replaced.
CREATE OR REPLACE TRIGGER trig
AFTER INSERT OR UPDATE OR DELETE
ON tab2
FOR EACH ROW
EXECUTE PROCEDURE proc3();