VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

管理 DML 触发器

本节主要介绍管理 DML 触发器的方法。

启用和禁用 DML 触发器

Vastbase 数据库支持使用 ALTER TABLE 语句和 ALTER TRIGGER启用和禁用 DML 触发器。

语法格式

  • ALTER TABLE

    ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) }
    { ENABLE | DISABLE } TRIGGER [ trigger_name | ALL | USER ] |
    ENABLE { REPLICA | ALWAYS } TRIGGER trigger_name
    
  • ALTER TRIGGER

    ALTER TRIGGER trigger_name { DISABLE | ENABLE [ REPLICA | ALWAYS ] }
    

参数说明

  • table_name

    触发器绑定的表名。

  • ENABLE | DISABLE

    启用或禁用触发器。

  • trigger_name

    触发器名称。

  • ALL

    启用或禁用所有触发器。

  • USER

    仅启用或禁用用户触发器。

  • REPLICA

    触发器触发机制受配置变量 session_replication_role 的影响,当复制角色为origin(默认值)或 local 时,将触发简单启用的触发器。

    配置为 ENABLE REPLICA 的触发器仅在会话处于 replica 模式时触发。

  • ALWAYS

    无论当前复制模式如何,配置为ENABLE ALWAYS的触发器都将触发。

修改 DML 触发器

支持通过 ALTER TRIGGER 语句修改触发器名称,或启用/禁用触发器。

注意事项

触发器所在表的所有者或者被授予了 ALTER ANY SEQUENCE 权限的用户可以执行 ALTER TRIGGER 操作,系统管理员默认拥有此权限。

语法格式

ALTER TRIGGER trigger_name { DISABLE |
                             ENABLE [ REPLICA | ALWAYS ] |
                             ON table_name RENAME TO new_name };

参数说明

  • trigger_name

    要修改的触发器名称。

    取值范围:已存在的触发器。

  • table_name

    要修改的触发器所在的表名称。

    取值范围:已存在的含触发器的表。

  • new_name

    修改后的新名称。

    取值范围:符合标识符命名规范的字符串,最大长度不超过63个字符,且不能与所在表上其他触发器同名。

  • ENABLE | DISABLE

    启用或禁用触发器。

  • REPLICA

    触发器触发机制受配置变量 session_replication_role 的影响,当复制角色为 origin (默认值)或 local 时,将触发简单启用的触发器。

    配置为 ENABLE REPLICA 的触发器仅在会话处于 replica 模式时触发。

  • ALWAYS

    无论当前复制模式如何,配置为ENABLE ALWAYS的触发器都将触发。

删除 DML 触发器

注意事项

触发器的所有者或者被授予了 DROP ANY TRIGGER 权限的用户可以执行 DROP TRIGGER 操作,系统管理员默认拥有此权限。

语法格式

DROP TRIGGER [ IF EXISTS ] trigger_name ON table_name [ CASCADE | RESTRICT ];

参数说明

  • IF EXISTS

    如果指定的触发器不存在,则发出一个notice而不是抛出一个错误。

  • trigger_name

    要删除的触发器名称。

    取值范围:已存在的触发器。

  • table_name

    要删除的触发器所在的表名称。

    取值范围:已存在的含触发器的表。

  • CASCADE | RESTRICT

    • CASCADE:级联删除依赖此触发器的对象。

    • RESTRICT:如果有依赖对象存在,则拒绝删除此触发器。此选项为缺省值。