触发更新时更新另一行

时间:2018-06-07 02:00:19

标签: sql-server database-trigger

有一个我们使用的软件,我无法修改代码,但我可以修改数据库。

该表有3个键,组合必须是唯一的。这些是HRCo字节,类型nvarchar(1)和代码nvarchar(10)。

我想要发生的是当我更新像Description这样的随机字段时,我希望它能够找到具有相同类型和代码组合的所有行,并更新具有相同类型和代码但不同HRCo的其他行。

ALTER TRIGGER [dbo].[udHRCMu] ON [dbo].[bHRCM]
AFTER UPDATE
AS
 BEGIN
     SET NOCOUNT ON;

     UPDATE bHRCM
       SET
           Description = i.Description,
           SafetyYN = i.SafetyYN,
           Notes = i.Notes,
           CertPeriod = i.CertPeriod,
           PTOTypeYN = i.PTOTypeYN,
           PRLeaveCode = i.PRLeaveCode,
           udHighRisk = i.udHighRisk,
           udGroup = i.udGroup
     FROM HRCM m
          INNER JOIN inserted i ON m.HRCo <> i.HRCo
                                   AND m.Type = i.Type
                                   AND m.Code = i.Code;

 END;

当此触发器生效时,它会修改该表中的所有行并使它们具有相同的Description,SafetyYN,Notes等。因此,它不会修改1或2行,而是修改400 +

还有一个插入触发器似乎正常工作,一旦添加了新的HRCo / Type / Code组合,它就会为不同的HRCo添加一个新行

0 个答案:

没有答案