触发器---FOR INSERT与INSTEAD OF

本文通过实例展示了SQL触发器中FOR INSERT和INSTEAD OF的区别。FOR INSERT在插入操作完成后执行触发器,而INSTEAD OF则用触发器本身替换插入操作。详细测试对比了两种情况下的表数据结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:
下面的实例由优快云论坛MS-SQL server版块中internetcsdn (公元1979年8月10日) 网友提供
测试一.
--------------
create table tb1 (id int identity(1,1), a varchar(10))
create trigger tri_tb1 on tb1 INSTEAD OF  insert
as 
begin
 insert tb1 (a)
 select a from inserted 
end

insert tb1(a)
select 'a'

select * from tb1
/*
id             a
-----------------
1             a
*/

-------------------------------------------------------------------
-------------------------------------------------------------------

测试一.
--------------
create table tb1 (id int identity(1,1), a varchar(10))
create trigger tri_tb1 on tb1 for  insert
as 
begin
 insert tb1 (a)
 select a from inserted 
end

insert tb1(a)
select 'a'

select * from tb1
/*
id             a
-----------------
1             a
2             a
*/

==========================================================
结论:FOR INSERT,插入动作完成后执行触发语句.
       INDSTEAD OF INSERT,用触发语句来代替插入语句.

AFTER
指定触发器只有在触发 SQL 语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。
如果仅指定 FOR 关键字,则 AFTER 是默认设置。


INSTEAD OF
指定执行触发器而不是执行触发 SQL 语句,从而替代触发语句的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值