2012-07-11 13 views
6

मुझे एक SQL क्वेरी की आवश्यकता है जो डेटाबेस प्रविष्टि को अद्यतन या बनाएगा (यदि कोई निश्चित ग्राहक अभी तक मौजूद नहीं है)। मैं इंटरनेट पर वर्तमान समाधान नहीं मिला:प्रश्न में अच्छा अभ्यास है?

command.CommandText = "REPLACE INTO [Resource_Tracer].[dbo].[Customer](CustomerName, CustomerID) VALUES (@CustomerName, @CustomerID)" 

जब से मैं यह एक बहुत इस्तेमाल किया है और वास्तव में इससे पहले कि यह कभी नहीं सुना नहीं दिख रहा है, यह वास्तव में समाधान मैं चाहता है, या मैं इसे मैन्युअल रूप से करना चाहिए?

उत्तर

5

REPLACE INTO और ON DUPLICATE KEY वैकल्पिक सुझाव दिए गए हैं जो MySQL संस्करण से गैर मानक एसक्यूएल हैं। तो क्या आप इसका उपयोग करते हैं, इस पर निर्भर करता है कि क्या आप MySQl का उपयोग कर रहे हैं और बी) चाहे आप उस संस्करण से बंधे हों।

ANSI SQL, एक MERGE वाक्य रचना अधिक मानक है कि परिभाषित करता है अगर यह आपके मंच

+0

यह पोस्ट: http: // stackoverflow। कॉम/ए/10733485/1274398 सुझाव देता है कि यह एसक्यूएल सर्वर 2008 और वार्डों पर काम करता है। मैं नहीं जानता कि उपयोगकर्ता एसक्यूएल सर्वर 2005 या 2008 का उपयोग करता है, वे चुनने के लिए स्वतंत्र हैं। क्या 2005 के बराबर है? –

+1

इसे 2008 संस्करण में SQL सर्वर में पेश किया गया था। एसक्यूएल 2005 में कोई प्रत्यक्ष समतुल्य नहीं है। यह आपको कुछ पॉइंटर्स दे सकता है: http://sqlserver-tips.blogspot.co.uk/2006/09/mimicking-merge-statement-in-sql.html – podiluska

2

यह वास्तव में एक डुप्लिकेट प्रविष्टि को हटा देता है और एक नया सम्मिलित करता है और अधिक

INSERT INTO table col1) VALUES (1) 
ON DUPLICATE KEY UPDATE col1=VALUES(Col1) 

replace into उपयोग करने के लिए आम बात है।

+0

तो, अनुवाद यह होना चाहिए पर लागू किया गया है:।। command.CommandText = "[Resource_Tracer] में डालने [dbo] [ ग्राहक] (ग्राहक नाम, ग्राहक आईडी) मूल्य (@ ग्राहक नाम, @ ग्राहक) आईडी पर अद्यतन कुंजी अपडेट [संसाधन_Tracer]। [डीबीओ]। [ग्राहक] (ग्राहक नाम, ग्राहक आईडी) मूल्य (@ ग्राहक नाम, @ ग्राहक) "? –

+0

मुझे नहीं पता था कि आप MSSQL का उपयोग कर रहे हैं। फिर आपको 'मेर्ज' में देखना चाहिए। [यह पोस्ट] देखें (http://stackoverflow.com/questions/1197733/does-sql-server-offer-anything-like- mysqls-on-duplicate-key-update) –

संबंधित मुद्दे