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 कथन के साथ आवश्यक नहीं है।
कर्सर और मेर्ज स्टेटमेंट के बीच कोई तुलना नहीं की जानी चाहिए।