第一次发帖,请温柔...SQL Server:指定Update Transaction是否来自触发器的选项?
我有一个需要更新一列的表或者更新或插入行(S),因此我创建了一个触发器(AFTER INSERT, UPDATE
)时。问题在于它是递归的,因为插入包含更新语句,因此再次触发触发器。
我也尝试了INSERT
和UPDATE
分成两个不同的触发器,但我已经遇到了问题sp_settriggerorder()
和trigger_nestlevel()
,因为在地方有其他触发,由于开箱应用程序的默认值。
我的问题是,有没有办法使用IF子句来说明更新是来自应用程序本身还是我的触发器?大小写,如果它是我的触发器,比我可以轻松地否则,如果它返回,它不会再递归。
CREATE TRIGGER [dbo].[JobCardMetlInsertUpdateItemDesc]
ON [dbo].[JobCardMetl] AFTER INSERT
AS
BEGIN TRANSACTION [Description]
UPDATE JobCardMetl
SET JobCardMetl.Description = item.Description
FROM JobCardMetl
INNER JOIN item ON JobCardMetl.Item = item.item
WHERE JobCardMetl.RecordDate = (SELECT MAX(JobCardMetl.RecordDate)
FROM JobCardMetl)
COMMIT TRANSACTION [Description]
触发递归(触发直接触发本身)可以在数据库或服务器(?)级别被禁用。当然会影响一切。 – RBarryYoung