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

SQL सर्वर सम्मिलित करें यदि मौजूद नहीं है

नीचे दिए गए कोड के बजाय

BEGIN
   INSERT INTO EmailsRecebidos (De, Assunto, Data)
   VALUES (@_DE, @_ASSUNTO, @_DATA)
   WHERE NOT EXISTS ( SELECT * FROM EmailsRecebidos 
                   WHERE De = @_DE
                   AND Assunto = @_ASSUNTO
                   AND Data = @_DATA);
END

. से बदलें
BEGIN
   IF NOT EXISTS (SELECT * FROM EmailsRecebidos 
                   WHERE De = @_DE
                   AND Assunto = @_ASSUNTO
                   AND Data = @_DATA)
   BEGIN
       INSERT INTO EmailsRecebidos (De, Assunto, Data)
       VALUES (@_DE, @_ASSUNTO, @_DATA)
   END
END

अपडेट किया गया: (इंगित करने के लिए @Marc Durdin का धन्यवाद)

ध्यान दें कि उच्च भार के तहत, यह अभी भी कभी-कभी विफल हो जाएगा, क्योंकि पहला कनेक्शन INSERT, यानी एक दौड़ की स्थिति को निष्पादित करने से पहले एक दूसरा कनेक्शन IF NOT EXISTS परीक्षण पास कर सकता है। एक अच्छे उत्तर के लिए stackoverflow.com/a/3791506/1836776 देखें कि लेनदेन में लपेटने से भी इसका समाधान क्यों नहीं होता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल आगामी जन्मदिन का चयन करें

  2. SQL सर्वर लिंक्ड सर्वर उदाहरण क्वेरी

  3. SQL सर्वर 2014 के लिए एक प्रोसेसर का चयन करना - भाग 2

  4. SQL सर्वर में, मैं हर जगह एक कॉलम का संदर्भ कैसे पा सकता हूं?

  5. कॉमा से अलग किए गए कॉलम के मान को पंक्तियों में बदलें