Vous avez deux possibilités pour votre question :
1- Utilisez la commande de mise à jour dans votre déclencheur.
ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
ON [dbo].[SCHEDULE]
AFTER UPDATE
AS BEGIN
SET NOCOUNT ON;
IF UPDATE (QtyToRepair)
BEGIN
UPDATE SCHEDULE
SET modified = GETDATE()
, ModifiedUser = SUSER_NAME()
, ModifiedHost = HOST_NAME()
FROM SCHEDULE S INNER JOIN Inserted I
ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
WHERE S.QtyToRepair <> I.QtyToRepair
END
END
2- Utilisez la jointure entre la table insérée et la table supprimée
ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
ON [dbo].[SCHEDULE]
AFTER UPDATE
AS BEGIN
SET NOCOUNT ON;
UPDATE SCHEDULE
SET modified = GETDATE()
, ModifiedUser = SUSER_NAME()
, ModifiedHost = HOST_NAME()
FROM SCHEDULE S
INNER JOIN Inserted I ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
INNER JOIN Deleted D ON S.OrderNo = D.OrderNo and S.PartNumber = D.PartNumber
WHERE S.QtyToRepair <> I.QtyToRepair
AND D.QtyToRepair <> I.QtyToRepair
END
Lorsque vous utilisez la commande de mise à jour pour la table SCHEDULE
et définissez QtyToRepair
Colonne vers la nouvelle valeur, si la nouvelle valeur est égale à l'ancienne valeur sur une ou plusieurs lignes, la solution 1 met à jour toutes les lignes mises à jour dans la table de planification, mais la solution 2 ne met à jour que les lignes de planification dont l'ancienne valeur n'est pas égale à la nouvelle valeur.