मैंने कभी भी एसक्यूएल में इस्तेमाल किए गए वाक्यविन्यास INSERT OR REPLACE INTO names (id, name) VALUES (1, "John")
को कभी नहीं देखा है, और मैं सोच रहा था कि यह UPDATE names SET name = "John" WHERE id = 1
से बेहतर क्यों है। एक दूसरे पर एक का उपयोग करने के लिए कोई अच्छा कारण है। क्या यह वाक्यविन्यास SQLite के लिए विशिष्ट है?SQLite "INSERT या स्थानांतरित करें" बनाम "अद्यतन करें ... कहां"
उत्तर
यदि पंक्ति मौजूद नहीं है तो अद्यतन कुछ भी नहीं करेगा।
जहां पंक्ति मौजूद नहीं है, या यदि मूल्य करता है तो मूल्यों को प्रतिस्थापित करें, जहां INSERT या REPLACE डालेंगे।
आईडी = 1 पहले से मौजूद नहीं है तो सम्मिलित या प्रतिस्थापित क्वेरी एक नया रिकॉर्ड डालेगी।
अद्यतन क्वेरी केवल oudate id = 1 होगी यदि यह अस्तित्व में है, तो यह अस्तित्व में नहीं होने पर एक नया रिकॉर्ड नहीं बनाएगा।
मुझे नहीं लगता कि यह सही है। स्क्लाइट प्रलेखन (1 जुलाई 2010, संस्करण 3.6.23.1 के अनुसार) कहता है कि 'स्थान INSERT या स्थान के लिए एक उपनाम है, और इसलिए वही व्यवहार होगा। मेरे अनुभव में यह मामला है .. – fostandy
मुझे लगता है कि यह एक डिलीट करेगा-> अगर यह एक संघर्ष पाता है तो डालें – StErMi
@ फोस्टंडी रीप्लेस वास्तव में INSERT या स्थान के लिए एक उपनाम है, लेकिन जिस उत्तर पर आप टिप्पणी कर रहे हैं उसके बारे में बात कर रहा है अद्यतन (क्योंकि यही सवाल था)। – hatfinch
मैं वर्तमान में इस तरह के एक बयान पर काम कर रहा हूं और नोटिस करने के लिए एक और तथ्य निकाला है: इंसर्ट या प्रतिस्थापन किसी भी मूल्य को प्रतिस्थापन में प्रदान नहीं किया जाएगा। उदाहरण के लिए यदि आपकी तालिका में एक स्तंभ "अंतिम नाम" है जिसमें आपने कोई मान नहीं दिया है, तो INSERT या REPLACE यदि संभव हो तो "अंतिम नाम" को समाप्त कर देगा (बाधाएं इसे अनुमति दें) या असफल हो जाएंगी।
+1; इसे अलग-अलग रखने के लिए: हमेशा "अद्यतन" पंक्ति के मूल्य_ के पूर्ण सेट को निर्दिष्ट करना चाहिए - कोई मौजूदा मान संरक्षित नहीं है; इस व्यवहार का कारण यह है कि वास्तव में मौजूदा पंक्ति के लिए * अपडेट * ऑपरेशन नहीं है, लेकिन एक विलोपन, फिर से सम्मिलन के बाद। – mklement0
REPLACE INTO table(column_list) VALUES(value_list);
INSERT OR REPLACE INTO table(column_list) VALUES(value_list);
के लिए की एक छोटी रूप है, अमल करने के लिए सही ढंग से अपनी मेज संरचना अद्वितीय पंक्तियां होनी चाहिए REPLACE कि क्या एक साधारण प्राथमिक कुंजी या एक अद्वितीय सूचकांक।
प्रतिस्थापन हटा देता है, फिर रिकॉर्ड दर्ज करता है और यदि आप उन्हें सेटअप करते हैं तो एक INSERT ट्रिगर निष्पादित करने का कारण बनता है। यदि आपके पास INSERT पर ट्रिगर है, तो आपको समस्याएं आ सकती हैं।
यह एक काम के आसपास .. गति की जाँच नहीं की ..
INSERT OR IGNORE INTO table (column_list) VALUES(value_list);
द्वारा
UPDATE table SET field=value,field2=value WHERE uniqueid='uniquevalue'
यह विधि एक एक ट्रिगर पैदा करने के बिना होने के लिए बदलने के लिए अनुमति देता है का पालन किया है।
- 1. SQLite "INSERT या स्थानांतरित करें"
- 2. "अंदर स्थानांतरित करें" बनाम INSERT [IF]
- 3. अद्यतन बनाम INSERT प्रदर्शन
- 4. MYSQL INSERT या अद्यतन अगर
- 5. एंड्रॉइड SQLite INSERT या REPLACE
- 6. एंड्रॉयड SQLite सम्मिलित या अद्यतन
- 7. SQLite, अद्यतन या बदलने के
- 8. सर्वर डेटाबेस अद्यतन होने पर sqlite डेटाबेस अद्यतन करें
- 9. INSERT INTO बनाम चयन
- 10. SQLite सम्मिलित करें या बदलें जहां
- 11. IF EXISTS अद्यतन ELSE INSERT
- 12. MySQL INSERT बनाम PHP file_put_contents
- 13. इंक्रिमेंट काउंटर या पंक्ति सम्मिलित करें, SQLite
- 14. PHP MYSQL अद्यतन अगर मौजूद है या INSERT नहीं है?
- 15. SQLite अद्यतन सिंटेक्स?
- 16. MySQL बनाम फ़ायरबर्ड बनाम SQLite
- 17. एसक्लाइट अद्यतन INSERT बयान पर ट्रिगर फायरिंग भी?
- 18. आईफोन पर कोरडाटा या SQLite का उपयोग करें?
- 19. INSERT आदेशों को अद्यतन करने के लिए
- 20. क्या MySQL अद्यतन INSERT से तेज है?
- 21. MySQL प्रदर्शन हटाएं या अद्यतन करें?
- 22. मेरिज बनाम ट्रंकेट और INSERT
- 23. ओरेकल मर्ज बनाम फिर चुनें या अपडेट करें
- 24. टेबल VALUES में MySQL INSERT .. तालिका में INSERT बनाम सेट
- 25. INSERT
- 26. SQlite: में चयन करें?
- 27. SQLite बनाम SQL सर्वर
- 28. "अद्यतन अद्यतन कैस्केड" का उपयोग कब करें
- 29. MySQL InnoDB का चयन करें ... बनाम अद्यतन ... सीमा 1
- 30. अद्यतन के बाद SQLite डेटा रखना
उत्तर के लिए धन्यवाद। क्या यह एक SQLite विशिष्ट बात है? –
मैं इस SQL सर्वर में इस बारे में नहीं हूं, हालांकि SQL सर्वर में अब एक MERGE कमांड है। और रोम एमएस एक्सेस I ने इस तरह कुछ भी देखा है। –
mysql ने "प्रतिस्थापित" किया है। – fastmultiplication