关键字
触发器、表级触发器
关于触发器
触发器(trigger)是用户定义的由事件驱动的特殊过程。一旦定义,所有用户的对应操作均会由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。触发器类似于约束,但是比约束更加灵活,也可以实施比外键约束、检查约束更为复杂的检查和操作,具有更精细和更强大的数据处理能力。
KingbaseES的触发器根据依赖触发对象的不同分为两种表级触发器和事件触发器:
表级触发器:依赖于已存在的表,对特定表的相关操作会引动发触发器调用相应的触发器函数。
事件触发器:依赖于特定的事件。
表级触发器
表级触发器会在对表执行相应的操作时自动执行相应的触发器函数。表级触发器可以创建在表、视图和外部表上。
表级触发器可以按照触发操作分为 INSERT 触发器、UPDATE 触发器和 DELETE 触发器,而每种触发器又有不同的触发时机,包括 BEFORE、AFTER 以及 INSTEAD OF ,其中 INSTEAD OF 触发器只能被定义在视图上,并被视图中每一个被标识的行触发。
表级触发器的创建
CREATE TRIGGER创建一个新触发器。该触发器将被关联到指定的表、视图或者外部表并且在表上发生特定操作时将执行指定的函数``function_name``。
示例:只要表accounts的一行即将要被更新时会执行函数check_account_update
CREATE TRIGGER check_update
BEFORE UPDATE ON accounts
FOR EACH ROW
EXECUTE FUNCTION check_account_update();
表级触发器的修改
ALTER TRIGGER更改一个现有触发器的属性。
示例:重命名一个现有的触发器:
ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs;
表级触发器的删除
DROP TRIGGER移除一个现有的触发器定义。
示例:移除表films上的触发器 if_dist_exists:
DROP TRIGGER if_dist_exists ON films;
参考资料
更多金仓数据库KingbaseES信息,详见 KingbaseES产品手册