在 INSERT 之后更新可能的多行 - 不工作

UPDATE after INSERT for potentially multiple rows - not working

我有以下触发器不起作用,我不确定为什么。 触发器应该在插入到 REFERRALS table 后触发,我已经允许插入多行的可能性。 REFERRALS table 中 ORIGINAL_PATIENT_ID 的值应设置为 Inserted 中 PATIENT_ID 的值,但它不起作用,即 ORIGINAL_PATIENT_ID 的值仍然为 NULL .

IF  EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[updateOSC]'))
DROP TRIGGER [dbo].[updateOSC]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[updateOSC]
ON [dbo].[REFERRALS]
AFTER INSERT

AS

BEGIN

SET NOCOUNT ON
IF (SELECT ORIGINAL_PATIENT_ID FROM Inserted) IS NULL
UPDATE [dbo].[REFERRALS] 
SET  ORIGINAL_PATIENT_ID = i.PATIENT_ID 
FROM Inserted i
WHERE dbo.REFERRALS.PATIENT_ID = i.PATIENT_ID
END
GO

如果您可以更新多行,那么 IF (SELECT ORIGINAL_PATIENT_ID FROM Inserted) IS NULL 对我来说没有多大意义,因为这将 return 无法与 NULL 进行比较的多个值。

我想你会通过使用

得到你想要的结果
CREATE TRIGGER [dbo].[updateOSC]
ON [dbo].[REFERRALS]
AFTER INSERT

AS

BEGIN

SET NOCOUNT ON

UPDATE [dbo].[REFERRALS] 
SET  
    ORIGINAL_PATIENT_ID = i.PATIENT_ID 
FROM 
   Inserted i
WHERE 
   dbo.REFERRALS.PATIENT_ID = i.PATIENT_ID AND i.ORIGINAL_PATIENT_ID IS NULL
END
GO