一、触发器是一类特殊的存储过程,在对表update、insert或delete语句是自动执行
二、触发器的操作:
(1)、创建:
格式:
CREATE trigger 触发器名 on 表名 for insert,update,delete
AS
触发器的内容
GO
(2)、修改:
格式:
ALTER trigger 触发器名 on 表名 for insert,update,delete
AS
触发器的内容
GO
(3)、删除:
DROP trigger 触发器名
三、触发器中有两个临时表:
inserted表:inserted表中存放的是 新增的或是修改之后的数据
deleted表:deleted表中存放的是 删除的或是修改之前的数据
这两个表结构跟母表是一样的,母表有多少列,两个临时表就有多少列、列名也一样。
四、触发器的类型:
AFTER类型:这是最常见的类型,一般不标明类型都默认是AFTER类型。
AFTER类型是先执行修改、删除、添加等命令,然后才执行触发器。
INSTEAD OF 类型:INSTEAD OF 是替换的意思,INSTEAD OF 类型也就是说用触发器来代替删除、更改的工作。
例1:现有一个minzu表,写一个触发器,每次更改minzu表中内容时都会提示 '改变一条记录'的触发器
minzu表
执行: 结果:
例2:用select显示inserted表、deleted表的数据
有表Fruit:
触发器:
执行结果: FRUIT表:
例3:水果表改变number列时,向orderdetails表中添加数据。
fruit表见例2。
orderdetails表现在是空的;
触发器:
执行结果:
例4:instead of触发器,删除info表的数据时,先删除work和family的数据,再删info相应的数据。
因为三个表之间相互约束,要想删除就得连带关联项一起删除
info表:
work表:
family表:
触发器:
执行:
所有与code='p003'所对应的人的信息就全删除了
结果:
info表:
work表:
family表: