Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

किसी अन्य तालिका में रिकॉर्ड अपडेट करने के लिए ट्रिगर अपडेट करें

आपको कुछ इस तरह की आवश्यकता होगी - एक सेट-आधारित समाधान जो इस बात को ध्यान में रखता है कि 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 . में संग्रहीत छद्म तालिका)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL में पहले 2 विशेष वर्ण के बीच वर्ण प्राप्त करें

  2. टी-एसक्यूएल:मूल्य सूची में मूल्यों का चयन कैसे करें जो तालिका में नहीं हैं?

  3. एसक्यूएल में एक ही आईडी के साथ कई पंक्तियों को कैसे जोड़ना है?

  4. लॉग इन करते हुए भी SQL लॉगिन ड्रॉप करें

  5. मौजूदा तालिका में एक कॉलम जोड़ें और उन्हें विशिष्ट रूप से एमएस एसक्यूएल सर्वर पर नंबर दें