4.6.3 表的触发器(Trigger)
一、表的触发器的基本概念
表的触发器是在一个插入、更新或删除操作之后运行的记录级事件代码。不同的事件可以对应不同的操作。
触发器是绑定在表上的表达式,当表中的任何记录被指定的操作命令修改时,触发器被激活。当数据修改时,触发器可执行数据库应用程序要求的任何操作。
如果从数据库中移去一张表,则同时删除和该表相关联的触发器。触发器在进行了其他所有检查之后(比如,主关键字的实施,有效性规则)被激活。触发器不对缓冲数据起作用,这一点与字段级和记录级规则不同。
二、触发器的创建
可用“表设计器”或CREATE TRIGGER命令来创建触发器,对于每一张表,可为:插入(INSERT)、更新(UPDATE)和删除(DELETE)3个事件各创建一个触发器。
插入触发器:每次向表中插入或追加记录时触发该规则。
更新触发器:每次在表中修改记录时触发该规则。
删除触发器:每次在删除记录时触发该规则。
触发器必须返回“真”(.T.)或“假”(.F.)。触发器在记录的验证规则之后运行,并且在缓冲更新时不运行,除非发布TABLEUPDATE()命令。
创建触发器的过程为:在如图4-4所示的“表设计器”的“表”选项卡里,在“插入触发器”、“更新触发器”或“删除触发器”框中,输入触发器表达式或包含触发器表达式的存储过程名。
或用CREATE TRIGGER命令创建各触发器。
创建插入触发器,格式如下:
CREATE TRIGGER ON表名FOR INSERT AS逻辑表达式
创建更新触发器,格式如下:
CREATE TRIGGER ON表名FOR UPDATE AS逻辑表达式
创建删除触发器,格式如下:
CREATE TRIGGER ON表名FOR DELETE AS逻辑表达式
例如,在js表中创建一个更新触发器,防止GL字段的值大于50,其命令如下:
CREATE TRIGGER ON gl FOR UPDATE AS js.gl<=50
三、移去或删除触发器
可以在界面中或使用DELETE TRIGGER命令从数据库表中删除触发器。
在“表设计器”的“表”选项卡的“触发器”区中,从“插入触发器”、“更新触发器”或“删除触发器”框里选定触发器表达式,并删除它。
使用DELETE TRIGGER命令移去或删除触发器的格式如下:
DELETE TRIGGER ON表名FOR DELETE|INSERT|UPDATE
如果从数据库中移去或删除表,则所有属于该表的触发器都从数据库中删除。但是,由被移去或删除的触发器引用的存储过程并没有被删除。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。