kingbase 触发器
关于启用和禁用触发器
触发器相比约束更加灵活,可以实现比外约束更为复杂的检查和操作,更精细和更强大的数据处理能力。
数据库触发器可以与表、模式或数据库相关联,它们可以在以下情况被隐式触发:
- 对关联的表执行DML语句(INSERT、UPDATE、DELETE)
- 某些DDL语句(例如:ALTER、CREATE、DROP)在数据库或模式中的对象上执行
创建触发器请使用CREATE TRIGGER语句,可以定义触发器函数是要在事件之后被调用、还是取代该事件。下面的示例在表class上创建了一个check_update_trigger触发器。在执行任何指定UPDATE语句之前触发该触发器,最终会执行触发器函数check_account_update。
CREATE TRIGGER class_update_trigger
AFTER
UPDATE ON class
FOR EACH ROW
EXECUTE FUNCTION check_class_update();
之后可以通过执行DROP TRIGGER语句从数据库中删除触发器。
要使用ALTER TABLE语句启用或禁用触发器,您必须是这个表的拥有者或者对该表具有ALTER权限。如果使用ALTER TRIGGER语句启用或禁用单个触发器,您必须拥有该触发器。
启用触发器
您可以使用带有ENABLE选项的ALTER TRIGGER语句启用禁用状态的触发器。
要在class表中启用名为class_trigger的触发器(禁用状态),输入以下语句:
ALTER TRIGGER class_trigger ENABLE;
上述用于启动特定的触发器,如果要启用特定表的所有触发器,请使用带有ENABLE ALL TRIGGERS选项的ALTER TABLE语句。如下示例,启用class表定义的所有触发器,则可以输入以下语句:
ALTER TABLE class
ENABLE ALL TRIGGERS;
禁用触发器
可以使用带有DISABLE选项的ALTER TRIGGER语句禁用触发器。
如果满足以下条件之一,请考虑暂时禁用触发器:
- 触发器引用的对象不可用。
- 您必须执行大型数据加载,并希望它在不触发触发器的情况下快速进行。
- 您正在将数据加载到触发器应用的表中。
要禁用class表上的class_trigger触发器,输入以下语句:
ALTER TRIGGER class_trigger DISABLE;
可以使用带有DISABLE ALL TRIGGERS选项的ALTER TABLE语句同时禁用与表关联的所有触发器。 如下示例,禁用class表中定义的所有触发器,可以输入以下语句:
ALTER TABLE class
DISABLE ALL TRIGGERS;
浙公网安备 33010602011771号