管理 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:如果有依赖对象存在,则拒绝删除此触发器。此选项为缺省值。