2015-06-30 91 views
0

我有两个触发器之一是Instead of update和其他是after update在同一个表上相同的任务,但在更新后,而不是触发器被激发,而如果我有两个触发后,然后两个都触发更新。这是什么原因?在同一张桌子上更新和更新后未更新的内容?

create trigger tr_tmp_instead on emp 
Instead of update 
as 
begin 
declare @name varchar(50),@message varchar(200)='Updated name Entered Successfully'; 
select @name=d.name from inserted d; 
insert into tmp_Instead values(getdate(),@message,@name) 
Print 'Trigger Fired, Updated name Entered Successfully Into tmp_Instead Table..' 

end 


create trigger tr_tmp on emp 
after update 
as 
begin 
declare @name varchar(50),@message varchar(200)='Updated name Entered Successfully'; 
select @name=d.name from inserted d; 
insert into tmp values(getdate(),@message,@name) 
Print 'Trigger Fired, Updated name Entered Successfully Into tmp Table..' 
end 
+1

为什么应该在after_update触发器触发时执行tmp_instead表中的更新? –

回答

0

INSTEAD OF触发器将覆盖它在其上定义的默认操作。

当您致电UPDATEemp,没有实际更新发生empAFTER UPDATE ON emp永远不会触发。

+0

谢谢,先生您的陈述“当您在emp上调用UPDATE时,没有实际更新发生在emp和AFTER UPDATE ON emp永远不会发生”深深理解我为什么'更新后'没有解雇..再次感谢您.. –