PostgreSQL Oracle 兼容性之 - ALTER TRIGGER ENABLE|DISABLE

本文介绍了PostgreSQL中如何启用或禁用触发器,对比了与Oracle的不同之处。PostgreSQL允许根据需要禁用或启用特定触发器,甚至可以按模式或用户操作。此外,触发器的执行还受到session_replication_role参数的影响,这使得在默认配置下,触发器在副本上不会执行,避免了数据重复。文章提供了相关参考资料和实际应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标签

PostgreSQL , 触发器 , enable , disable


背景

Oracle 临时关闭或启用触发器的语法如下

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4001.htm

ALTER TRIGGER [ schema. ]trigger    
  { ENABLE    
  | DISABLE    
  | RENAME TO new_name    
  | COMPILE [ DEBUG ]    
      [ compiler_parameters_clause    
        [ compiler_parameters_clause ] ... ]    
      [ REUSE SETTINGS ]    
  } ;    

PostgreSQL 触发器开关语法更丰富一些

PostgreSQL中对应的语法在alter table中,因为触发器与表相关,这样设计语法也符合逻辑的。

https://www.postgresql.org/docs/devel/static/sql-altertable.html

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]    
    action [, ... ]    
    
    DISABLE TRIGGER [ trigger_name | ALL | USER ]    
    ENABLE TRIGGER [ trigger_name | ALL | USER ]    
    
    ENABLE REPLICA TRIGGER trigger_name    
    ENABLE ALWAYS TRIGGER trigger_name    

细节(注意触发器被触发还受制于session_replication_role参数与replica|always的配置。)

These forms configure the firing of trigger(s) belonging to the table. A disabled trigger is still known to the system, but is not executed when its triggering event occurs. For a deferred trigger, the enabl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值