加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

简析sqlserver触发器以及如何使用sql 触发器

发布时间:2020-12-12 14:11:24 所属栏目:MsSql教程 来源:网络整理
导读:公司开早会,今天分享sqlserver触发器,发上来也给大家瞅瞅。 ? 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update

公司开早会,今天分享sqlserver触发器,发上来也给大家瞅瞅。

?

触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。DML触发器分为:

a、 insert触发器

b、 update触发器

c、 delete触发器

主要研究了一下DML触发器

鄙人总结如下:


1.触发器主要是通过事件进行触发被自动调用执行的
2.触发器是一个特殊的存储过程,但和存储过程的调用方式不同。(事件触发)
3.常见的触发器有三种:分别应用于Insert,Update,Delete 事件。
4.一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息
分别是:虚拟表Inserted和虚拟表Deleted
Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”


创建触发器:
CREATE TRIGGER triggerName??--触发器名字
ON table????????????????????--对哪个表创建触发器
FOR update/delete/insert????--因什么事件触发
AS
BEGIN
????????????????????????????--事件触发后要做的事情 例如:对与主表关联的表的相关信息进行同步更新
END

献上鄙人找到的最通俗理解触发器原理及作用的一个小事例:
我们为什么要使用触发器?比如,这么两个表
eg:
??????Create Table Student??????????????--学生表

??????(???

????????StudentID int primary key,???????--学号
????????....
???????)
?
??????Create Table BorrowRecord?????????????????--学生借书记录表

?????(?????????????
????????BorrowRecord???int identity(1,1),???????--流水号??
????????StudentID??????int,????????????????????--学号
????????BorrowDate?????datetime,????????????????--借出时间
????????ReturnDAte?????Datetime,????????????????--归还时间
????????...
??????)
?
?????用到的功能有:
????????1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
????????2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录,等等。
?
?????这时候可以用到触发器。对于1,创建一个Update触发器:
?
?????Create Trigger truStudent
???????On Student?????????????????????????--在Student表中创建触发器
???????for Update?????????????????????????--为什么事件触发
?????As???????????????????????????

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读