SQL server 的 instead of与 after触发器区别

(注:如果小弟有啥地方理解错误,还请各位大佬指出,以便更正。)

instead of 

如同单词一样,可以理解为代替的意思,当你在一张表上定义了这样的触发器后,如果对表做insert、update、delete操作时触发了所定义的触发器,他就会直接转到触发器去执行触发器里定义的事件,不在执行之前做的insert、update、delete操作了;

例子如下:(往教师表中添加一个instead of 新增操作的触发器,如果触发器生效,则直接执行触发器里面的内容,就不在往教                        师表添加任何数据,而是直接执行学生表添加的操作。)

insert into teacher values(newid(),张三)  

create trigger tgr_XXX_insert
on 表名
     instead of insert --插入触发
as

begin
    insert into Student values(newid(),小白)  

end

 

after

例子如下:(往教师表中添加一个after 新增操作的触发器,如果触发器生效,首先是执行教师表的添加,之后再去执行触发器                          里面的内容,也就是往学生表中添加数据。)

insert into teacher values(newid(),张三)  

create trigger tgr_XXX_insert
on 表名
    after insert --插入触发
as

begin
    insert into Student values(newid(),小白)  

end

他的作用就是当你在一张表上定义了这样的触发器后,如果对表做insert、update、delete操作时触发了所定义的触发器,它并不会直接去执行触发器,而是先操作了你对表的操作后,再去执行触发器定义的事件;

 

上一篇:算法训练题笔记


下一篇:20190412 T-SQL语言一