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

DELETE TRIGGER के साथ DELETE करने से पहले INSERT ने डिलीट किए गए मानों को एक टेबल में डाल दिया

आपकी समस्या यह है:यह ट्रिगर बाद में सक्रिय होता है हटाना पहले ही हो चुका है . इसलिए HashTags में अब कोई पंक्ति नहीं है जिसमें आप शामिल हो सकते हैं!

इसके बजाय आपको इस ट्रिगर का उपयोग करने की आवश्यकता है:

ALTER TRIGGER [dbo].[HashTags_BeforeDelete]
    ON [dbo].[HashTags]
    FOR DELETE
AS
  BEGIN
    INSERT INTO HashTagsArchive(Id, HashTagId, delete_date)
       SELECT 
           d.Id, d.HashTagId, GETUTCDATE() 
       FROM deleted d 
  END
GO

Deleted छद्म तालिका में संपूर्ण पंक्ति(पंक्तियां) . है जिन्हें हटा दिया गया था - किसी भी चीज़ में शामिल होने की आवश्यकता नहीं है...

साथ ही:यह ट्रिगर डिलीट होने के बाद सक्रिय होता है - इसलिए आपको ट्रिगर के अंदर स्वयं कुछ भी करने की आवश्यकता नहीं है - बस उन सूचनाओं के बिट्स को अपनी संग्रह तालिका में डालें - बस इतना ही। बाकी सब कुछ आपके लिए SQL सर्वर द्वारा नियंत्रित किया जाता है।




  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. एसक्यूएल सर्वर में एक एक्सएमएल में आखिरी से एनएच तत्व प्राप्त करना

  3. एसएसआईएस संस्करण चेकआउट

  4. SQL सर्वर 2008 से XML फ़ाइल बनाना

  5. SQL सर्वर में शीर्ष के साथ संबंधों का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 114