को दबाने मैं सटीकMysql अस्थायी रूप से अद्वितीय सूचकांक
+----+-----------+------------+-------------+-------------+-------------+
| id | id_parent | sort_order | some_data | other_data | more_data |
+----+-----------+------------+-------------+-------------+-------------+
| 1 | 1 | 1 | lorem ipsum | lorem ipsum | lorem ipsum |
| 2 | 1 | 2 | lorem ipsum | lorem ipsum | lorem ipsum |
| 3 | 1 | 3 | lorem ipsum | lorem ipsum | lorem ipsum |
+----+-----------+------------+-------------+-------------+-------------+
अब मैं उन्हें, अपने डेटा और उनके SORT_ORDER में अद्यतन करना चाहते होने के लिए दो स्तंभों पर अद्वितीय सूचकांक, id_parent और SORT_ORDER के साथ एक मेज है एक जाना। sort_order 1 - 2 - 3
से बदल जाएगा, उदाहरण के लिए 2 - 3 - 1
।
लेकिन जब मैं अपडेट स्टेटमेंट्स चालू करना शुरू करता हूं, तो अद्वितीय इंडेक्स मुझे उम्मीद करता है, जैसा कि उम्मीद है कि मेरे पास id_parent = 1 and sort_order = 2
के साथ दो पंक्तियां नहीं हो सकती हैं। ठीक है, मैं इसे अभी 4 सेट कर सकता हूं, अन्य पंक्तियों को सही क्रम में अपडेट कर सकता हूं, और फिर इसे सेट कर सकता हूं। लेकिन फिर, मुझे एक अतिरिक्त कथन चलाने की ज़रूरत होगी, और शायद अपडेट के सही क्रम को निर्धारित करने के लिए मेरी स्क्रिप्टिंग भाषा में अतिरिक्त तर्क जोड़ें। मैं ओआरएम का भी उपयोग करता हूं, और यह और भी असुविधाजनक हो जाता है।
मेरा प्रश्न अब, क्या mysql अस्थायी रूप से इस अनुक्रमणिका को अनदेखा करने के लिए कुछ तरीका है? एक विशेष लेनदेन शुरू करने की तरह, जिसमें इंडेक्स की गणना करने से पहले ही गणना की जाएगी?
क्या आपकी टेबल InnoDB या MyISAM? – Pacerier