我有一个更新触发器,用于在另一个表中更新记录时更新空记录。我的问题是,数据是在gridview中,当你更新时,它会在网格中的所有记录上运行更新查询,而不仅仅是更新后的记录。所以当触发器触发时,它会更新目标表中匹配的每一行,但我只想更新数据已更改的那一行。这是我的触发器。更新如果数据已更改,则仅触发更新
ALTER TRIGGER [dbo].[Trigger_update_DeSchedule] ON [dbo].[tBatchDetails]
After UPDATE ,INSERT
AS
BEGIN
SET NOCOUNT ON
DECLARE @BatchId int
, @Ethanol varchar(10)
, @Glucose varchar(10)
, @SampleAge varchar(10);
SELECT @BatchId = B.[BatchID]
,@Ethanol = [Ethanol]
,@Glucose= [Glucose]
,@SampleAge = SA.SampleAge
from INSERTED bd
INNER JOIN [dbo].[tSampleAge] sa ON SA.SampleAgeID = BD.SampleAge
INNER JOIN [dbo].[tBatch] b ON B.ID =BD.ID
UPDATE [dbo].[DeSchedule]
SET [Ethanol] = @Ethanol
, [Glucose] = @Glucose
, [SampleCompleted] = 1
WHERE [BatchID] = @BatchId
AND [SampleAge] = @SampleAge
AND SiteID = 6
AND SampleCompleted IS NULL
END
如何在此触发器中只更新数据已更改的记录?
[**尝试具有一下触发器**代替-的](https://technet.microsoft.com/en-us/library/ms175521(V = SQL.105)的.aspx) –