आपके पास अपने प्रश्न के लिए दो रास्ते हैं:
1- अपने ट्रिगर में अपडेट कमांड का प्रयोग करें।
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- सम्मिलित तालिका और हटाए गए तालिका के बीच में शामिल हों का उपयोग करें
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
जब आप टेबल के लिए अपडेट कमांड का उपयोग करते हैं SCHEDULE
और सेट करें QtyToRepair
नए मान के लिए कॉलम, यदि एक या बहु पंक्ति में पुराने मान के बराबर नया मान, समाधान 1 शेड्यूल तालिका में सभी अपडेट की गई पंक्ति को अपडेट करता है लेकिन समाधान 2 अपडेट केवल उन पंक्तियों को शेड्यूल करता है जो पुराने मान नए मान के बराबर नहीं हैं।