レコードが別のテーブルで更新されたときにnullレコードを更新する更新トリガーがあります。私の問題は、データがグリッドビューにあることです。更新すると、更新されたレコードだけでなく、グリッド内のすべてのレコードの更新クエリが実行されます。だからトリガーが発生すると、それは一致するターゲットテーブル内のすべての行を更新しますが、データが変更されたものだけを更新したいだけです。ここに私の引き金があります。更新データが変更された場合のみ更新をトリガーする
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)**トリガ代わり-の**見を有する試し] –