Sql-Server
更新多行時觸發更新後
是否可以使用觸發器來更新多行?例如,我有一個應用程序將使用表值參數和 SQL 儲存過程將 15 到 20 行之間的任何位置轉儲到表中。一旦該數據被轉儲,我就需要一種方法(我正在考慮一個觸發器)來更新剩餘的“缺失”欄位。我認為這種方法可能有效(這是我更新的有效語法)
Create TRIGGER [dbo].[UpdateFields] ON [dbo].[TFData] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE a Set a.DateOfInjury = b.InjurDate ,a.GameNum = c.GameNum FROM [dbo].[InjuryReport] a INNER JOIN [dbo].[GameStats] b ON a.playnum = b.playnum INNER JOIN [dbo].[GameSched] c On b.gamenum = c.gamenum
我需要如何編寫這個觸發器來更新多行?我想我會以某種方式需要加入虛擬表,但我不確定。
你是對的,有一個名為“插入”的虛擬表是你需要加入的。此表包含已在原始表插入語句中插入的所有行。所以像:
CREATE TRIGGER [dbo].[UpdateFields] ON [dbo].[TFData] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE a Set a.DateOfInjury = b.InjurDate ,a.GameNum = c.GameNum FROM [dbo].[InjuryReport] a INNER JOIN [dbo].[GameStats] b ON a.playnum = b.playnum INNER JOIN [dbo].[GameSched] c On b.gamenum = c.gamenum INNER JOIN inserted i ON b.linkfield = i.linkfield