在这里,我要发布两个触发器,这两个触发器需要区别吗? [英] Here I am posting two trigger, I need difference for these two Trigger?

查看:104
本文介绍了在这里,我要发布两个触发器,这两个触发器需要区别吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO




ALTER      TRIGGER [PIP_ENTRYINSERT]
   ON dbo.PIP_Entry
   
AFTER INSERT AS 

UPDATE PIP_ENTRY SET pipcode = (SELECT 'PIP'++CONVERT(VARCHAR,MAX(pipcode1)+1) FROM PIP_ENTRY) where pipcode =''
UPDATE PIP_ENTRY SET pipcode1 = (SELECT MAX(pipcode1)+1 FROM PIP_ENTRY) where pipcode1 = 0




GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


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


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

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO




ALTER      TRIGGER [PIP_ENTRYINSERT]
   ON dbo.PIP_Entry
   
FOR INSERT AS 

UPDATE PIP_ENTRY SET pipcode = (SELECT 'PIP'++CONVERT(VARCHAR,MAX(pipcode1)+1) FROM PIP_ENTRY) where pipcode =''
UPDATE PIP_ENTRY SET pipcode1 = (SELECT MAX(pipcode1)+1 FROM PIP_ENTRY) where pipcode1 = 0




GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO



在Advance



Thanks in Advance

推荐答案

中,我认为两者是相同的.请参阅下面来自Microsoft的描述.

FOR |之后

AFTER指定仅在触发SQL语句中指定的所有操作成功执行后才触发DML触发器.在此触发器触发之前,所有引用级联操作和约束检查也必须成功.
当FOR是唯一指定的关键字时,AFTER是默认设置.
无法在视图上定义AFTER触发器.


参考: http://msdn.microsoft.com/en-us/library/ms189799.aspx [ ^ ]
I think both are same. See the description from microsoft below.

FOR | AFTER

AFTER specifies that the DML trigger is fired only when all operations specified in the triggering SQL statement have executed successfully. All referential cascade actions and constraint checks also must succeed before this trigger fires.
AFTER is the default when FOR is the only keyword specified.
AFTER triggers cannot be defined on views.


Ref: http://msdn.microsoft.com/en-us/library/ms189799.aspx[^]


这篇关于在这里,我要发布两个触发器,这两个触发器需要区别吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆