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

क्या मैं SQL सर्वर 2005 में MERGE कथन का उपयोग कर सकता हूँ?

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 कथन आपको संगामिति से नहीं बचाता है।

मैंने कुछ मेर्ज के बारे में अन्य चेतावनियां प्रकाशित की हैं। अधिक विवरण यहाँ




  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. SQL सर्वर (T-SQL) में 'समय' को 'डेटाटाइम' में बदलने के उदाहरण

  3. SQL संग्रहीत कार्यविधि प्राप्त करना RODBC का उपयोग करके data.frame प्रारूप में परिणाम देता है

  4. कैसे एक स्ट्रिंग से तारीख अलग करने के लिए?

  5. SQL सर्वर (T-SQL) में डेटाबेस मेल प्रोफाइल की सूची लौटाएं