我需要在事务中临时禁用一个 PostgreSQL 触发器,但不需要硬锁定表。有人知道这是否可能吗?
像这样的事情,无需锁定表并禁用此事务之外的触发器。
BEGIN TRANSACTION;
ALTER TABLE foo DISABLE TRIGGER bar;
-- DO SOME UPDATES ON foo
UPDATE foo set field = 'value' where field = 'test';
ALTER TABLE foo ENABLE TRIGGER bar;
COMMIT;
要暂时禁用 PostgreSQL 会话中的所有触发器,请使用以下命令:
SET session_replication_role = replica;
这仅禁用当前数据库会话的所有触发器。对于批量操作很有用,但请记住要小心保持数据库的一致性。
重新启用:
SET session_replication_role = DEFAULT;
Source: http://koo.fi/blog/2013/01/08/disable-postgresql-triggers-temporarily/ http://koo.fi/blog/2013/01/08/disable-postgresql-triggers-temporarily/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)