[英]SQL Server : trigger on Bulk Update
如何更改下面的触发器以进行批量更新? 在触发器中,我获得了传入的ActivityTypeID
。 如果值为'32E490BB-DA7E-E811-80D9-00155D012204',则请确保将IsBillable
列设置为0,否则将其设置为1。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[trg_WorklogInsert1]
ON [dbo].[WorkLog]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ActivityTypeID UNIQUEIDENTIFIER;
SET @ActivityTypeID = (SELECT [ActivityType_Id] FROM inserted);
IF @ActivityTypeID = '32E490BB-DA7E-E811-80D9-00155D012204'
BEGIN
UPDATE w
SET w.IsBillable = 0
FROM [dbo].[WorkLog] AS w
INNER JOIN inserted AS i ON w.Id = i.Id
END
ELSE
BEGIN
UPDATE w
SET w.IsBillable = 1
FROM [dbo].[WorkLog] AS w
INNER JOIN inserted AS i ON w.Id = i.Id
END
END
美好的一天,
请检查波纹管触发器是否满足您的需求:
CREATE TRIGGER [dbo].[trg_WorklogInsert1] ON [dbo].[WorkLog] AFTER INSERT,UPDATE AS BEGIN
SET NOCOUNT ON;
UPDATE w
set w.IsBillable =
CASE
WHEN i.ActivityType_Id = '32E490BB-DA7E-E811-80D9-00155D012204'
THEN 0
ELSE 1
END
FROM [dbo].[WorkLog] as w
INNER JOIN inserted as i on w.Id = i.Id
END
GO
注意! 据我了解,您的问题与批量插入无关,而是与一起插入的多行相关(您的触发器版本仅涉及插入/更新单行的情况)。 如果不是这种情况,请详细说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.