MERGE
SQL Server 2008 में पेश किया गया था। यदि आप उस सिंटैक्स का उपयोग करना चाहते हैं, तो आपको अपग्रेड करना होगा।
अन्यथा, विशिष्ट दृष्टिकोण इस बात पर निर्भर करेगा कि स्रोत डेटा कहां से है। यदि यह केवल एक पंक्ति है और आप नहीं जानते कि आपको अद्यतन करने या सम्मिलित करने की आवश्यकता है, तो आप शायद ऐसा करेंगे:
UPDATE ... WHERE key = @key;
IF @@ROWCOUNT = 0
BEGIN
INSERT ...
END
यदि आपका स्रोत #temp तालिका, तालिका चर, TVP या अन्य तालिका है, तो आप यह कर सकते हैं:
UPDATE dest SET ...
FROM dbo.destination AS dest
INNER JOIN dbo.source AS src
ON dest.key = src.key;
INSERT dbo.destination SELECT ... FROM dbo.source AS src
WHERE NOT EXISTS (SELECT 1 FROM dbo.destination WHERE key = src.key);
जैसा कि MERGE
के साथ है (और माइकल स्वार्ट ने यहां प्रदर्शित किया
), आप अभी भी इनमें से किसी भी तरीके को उचित लेनदेन, त्रुटि प्रबंधन और अलगाव स्तर के साथ एक सच्चे, एकल ऑपरेशन की तरह व्यवहार करने के लिए घेरना चाहेंगे। एक भी MERGE
कथन आपको संगामिति से नहीं बचाता है।
मैंने कुछ मेर्ज के बारे में अन्य चेतावनियां प्रकाशित की हैं। अधिक विवरण यहाँ ।