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

सरल IF EXISTS की तुलना में MERGE के क्या लाभ हैं?

MERGE INSERT, UPDATE और DELETE लॉजिक को एक DML स्टेटमेंट में जोड़ती है, और इसलिए परमाणु है। अगर आप सिंगल रो यूपीएसईआरटीएस कर रहे हैं तो फायदे कम स्पष्ट हैं। उदाहरण के लिए, यूपीएसईआरटी का सरल कार्यान्वयन निम्न जैसा दिख सकता है:

IF  EXISTS (SELECT * FROM t1 where [email protected])
    UPDATE t1 SET ... WHERE [email protected]
ELSE
    INSERT INTO t1 (...) VALUES (...)

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

BEGIN TRAN
IF  EXISTS (SELECT * FROM t1 WITH (HOLDLOCK, UPDLOCK) where [email protected] )
    UPDATE t1 SET ... WHERE [email protected]
ELSE
    INSERT INTO t1 (...) VALUES (...)
COMMIT

यह तर्क MERGE कथन के साथ आवश्यक नहीं है।

कर्सर और मेर्ज स्टेटमेंट के बीच कोई तुलना नहीं की जानी चाहिए।



  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. PowerShell का उपयोग करके SQL सर्वर में .csv से डेटा कैसे आयात करें?

  3. SQL सर्वर, पायथन और OS X

  4. पहचान विशिष्टता के लिए तालिका को कैसे बदलें पहचान SQL सर्वर है

  5. एसक्यूएल में कुल मिनट के लिए डेटाटाइम