在 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
我有以下触发器不起作用,我不确定为什么。 触发器应该在插入到 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