编程技术 · 2023年4月6日

SQL触发器中的FOR ,AFTER,Instead of有什么区别

AFTER和For是一个意思,保留for只是为了向前兼容

1、AFTER(for)触发器 (操作后)

after触发器是指在操作成功后,所采取的一些动作!也就是说目标表格中的真实数据已经变更,在相应的Inserted和Deleted临时表格中,只是相应数据的副本.供使用者检查确认

2、instead of 触发器

字面意思就是代替的意思,也就是说,对表格的相应操作,并不会实际影响目标表格,对数据的操作只是一个触发而已,真正起作用的是触发器里面的动作;往往这种触发器会有很多分支判断语句在里面,根据不同的条件做不同的动作!

举个例子,如果你在Insert时,触发了Instead of触发器,但又没有在触发器里面实现相应的Insert功能。那么目标表是不会有数据的

Delete操作时也是同理

但相应的Inserted和Deleted临时表则不受影响。还是会有相应的数据,你可以在Insert时,直接从Inserted表插入数据

如:

INSERT INTO * SELECT * FROM inserted 

同理,INSTEAD OF 触发器的动作要早于表的约束处理,如级联约束。

最新电影,电视剧,尽在午夜剧场

电影电视剧午夜不寂寞