摘要:前言前面关系数据库之可编程性函数用户自定义函数一文提到关系型数据库提供了可编程性的函数存储过程事务触发器及游标,前文已介绍了函数存储过程事务,本文来介绍一下触发器的使用。触发器是在执行之后触发,而触发器是在执行之前触发。
前言
前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数、存储过程、事务、触发器及游标,前文已介绍了函数、存储过程、事务,本文来介绍一下触发器的使用。(还是以前面的银行系统为例)
概述触发器(TRIGGER)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( INSERT,DELETE, UPDATE)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。
触发器分为两种:AFTER触发器和INSTEAD OF触发器。
语法创建触发器
CREATE TRIGGER <触发器名称> ON <表名|视图名> [AFTER | INSTEAD OF]AS --SQL语句块
修改触发器
ALERT TRIGGER <触发器名称> ON <表名|视图名> [AFTER | INSTEAD OF]AS --SQL语句块
删除触发器
DROP TRIGGER <触发器名称>
说明:
AFTER触发器主要用于在数据表执行INSERT,DELETE, UPDATE操作之后,同时操作其他表。
INSTEAD OF触发器会替代所要执行的SQL语句,也就是说所要执行SQL并不会真正执行,真正执行的是触发器中定义的操作。
AFTER触发器只针对表操作,INSTEAD OF触发器除了操作表还可以作用于视图,扩展视图可以支持的更新操作。
AFTER触发器是在执行SQL之后触发,而INSTEAD OF触发器是在执行SQL之前触发。
一个表的INSERT,DELETE, UPDATE操作可以有多个AFTER触发器,有至多一个INSTEAD OF触发器。
特殊表触发器有两个特殊的表:插入表(instered表)和删除表(deleted表)
示例1.AFTER触发器示例
在取钱时,交易信息表里面插入交易信息,同时要更改账户表里面的余额
--创建触发器 CREATE TRIGGER Trigger_getMoney ON TransInfo AFTER INSERT AS declare @cardId varchar(19) declare @tranMoney money select @cardId = CardID , @tranMoney = TransMoney from instered; update CardInfo set LeftMoney = LeftMoney - @tranMoney where CardID = @cardId GO --执行插入操作 insert into TransInfo values("1324 3626 7532 1935","取款",500,default);
2.INSTEAD OF触发器
指定的账户"422322001550135015"不可以删除
--创建触发器 CREATE TRIGGER Trigger_deleteAccount ON AccountInfo INSTEAD OF DELETE AS delete from AccountInfo where CardID != "422322001550135015" AND CardID=(select CardID from deleted) --执行删除操作
本文就介绍到这里。
如有疑问请联系我。
原文来自:简书
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/17537.html
摘要:前言前面关系数据库之可编程性函数用户自定义函数一文提到关系型数据库提供了可编程性的函数存储过程事务触发器及游标,前文已介绍了函数存储过程,本文来介绍一下事务的使用。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。 前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数、存储过程、事务、触发器及游标,前文已介绍了函数、存...
阅读 4152·2023-04-26 02:40
阅读 2655·2023-04-26 02:31
阅读 2746·2021-11-15 18:08
阅读 567·2021-11-12 10:36
阅读 1425·2021-09-30 09:57
阅读 5192·2021-09-22 15:31
阅读 2626·2019-08-30 14:17
阅读 1269·2019-08-30 12:58