公司开早会,今天分享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:
在表记录新增时
再理解一下deleted和inserted两个临时表的差异
Inserted
存放进行insert和update 操作后的数据
Deleted
存放进行delete 和update操作前的数据
注意:update 操作相当于先进行delete 再进行insert ,所以在进行update操作时,修改前的数据拷贝一条到deleted 表中,修改后
的数据在存到触发器作用的表的同时,也同时生成一条拷贝到insered表中
欢迎转载,但请注明出处,第一篇SQL原创博文