मेरे पास निम्न क्वेरी है:MySQL ऑन डिप्लिकेट कुंजी - अंतिम डालने आईडी?
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
मैं या तो सम्मिलित या अद्यतन की आईडी चाहता हूं। आमतौर पर मैं इसे प्राप्त करने के लिए दूसरी क्वेरी चलाता हूं क्योंकि मेरा मानना है कि insert_id() केवल 'डाली गई' आईडी लौटाता है, न कि अद्यतन आईडी।
क्या INSERT/UPDATE का कोई तरीका है और दो प्रश्नों को चलाने के बिना पंक्ति की आईडी पुनर्प्राप्त करें?
मानने की बजाय, आप इसे स्वयं परीक्षण क्यों नहीं करते? उपरोक्त संपादन में एसक्यूएल काम करता है, और मेरे परीक्षण के माध्यम से एक प्रविष्टि विफल होने से तेज है, INSERT IGNORE का उपयोग करके, या यह देखने के लिए कि पहले डुप्लिकेट है या नहीं। –
चेतावनी: समाधान प्रस्तावित काम करता है, लेकिन auto_increment मान में वृद्धि जारी है, भले ही कोई सम्मिलित न हो। यदि डुप्लिकेट कुंजी अक्सर होती है, तो आप उपरोक्त क्वेरी के बाद 'तालिका तालिका टैबलेटनाम AUTO_INCREMENT = 0;' को अपने आईडी मानों में बड़े अंतर से बचने के लिए चला सकते हैं। –