आपको कुछ इस तरह की आवश्यकता होगी - एक सेट-आधारित समाधान जो इस बात को ध्यान में रखता है कि UPDATE
. में कथन, हो सकता है कि आप एकाधिक पंक्तियों को अपडेट कर रहे हों एक बार में, और इसलिए आपके ट्रिगर को Inserted
. में एकाधिक पंक्तियों से निपटना होगा और Deleted
टेबल।
CREATE TRIGGER [dbo].[updateUserId]
ON [dbo].[User_TB]
FOR UPDATE
AS
-- update the "Break" table - find the rows based on the *old* User_Id
-- from the "Deleted" pseudo table, and set it to the *new* User_Id
-- from the "Inserted" pseudo table
SET User_Id = i.User_Id
FROM Inserted i
INNER JOIN Deleted d ON i.TID = d.TID
WHERE
Break_TB.User_Id = d.User_Id
-- update the "Log" table - find the rows based on the *old* User_Id
-- from the "Deleted" pseudo table, and set it to the *new* User_Id
-- from the "Inserted" pseudo table
UPDATE Break_TB
SET User_Id = i.User_Id
FROM Inserted i
INNER JOIN Deleted d ON i.TID = d.TID
WHERE
Break_TB.User_Id = d.User_Id
यह कोड मानता है कि TID
User_TB
. में कॉलम तालिका प्राथमिक कुंजी है जो अपडेट के दौरान समान रहता है (ताकि मैं Deleted
से "पुराने" मानों को एक साथ जोड़ सकूं अद्यतन के बाद "नए" मानों के साथ छद्म तालिका, Inserted
. में संग्रहीत छद्म तालिका)