1月15日 触发器

一、触发器是一类特殊的存储过程,在对表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表:

原文地址:https://www.cnblogs.com/tzq9308/p/4226062.html