परिदृश्य में एक MySQL तालिका शामिल है जहां आईडी कॉलम दृश्य के लिए एक ऑटो-वृद्धि फ़ील्ड के रूप में कार्य करता है सुविधा, जबकि मेम्बरिड कॉलम वास्तविक अद्वितीय कुंजी के रूप में कार्य करता है। हालाँकि, प्राथमिक कुंजी (सदस्यता) के साथ तालिका को परिभाषित करने के प्रयास के परिणामस्वरूप एक त्रुटि (1075) आती है जिसमें कहा गया है कि केवल एक ऑटो कॉलम हो सकता है और यह एक कुंजी होनी चाहिए।
समस्या को हल करने के लिए, एक ऑटो-इंक्रीमेंटिंग कॉलम होना संभव है जो प्राथमिक कुंजी नहीं है, बशर्ते उस पर एक इंडेक्स (कुंजी) परिभाषित हो। यहां संशोधित तालिका परिभाषा दी गई है:
CREATE TABLE members (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
memberid VARCHAR(30) NOT NULL,
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
firstname VARCHAR(50) NULL,
lastname VARCHAR(50) NULL,
PRIMARY KEY (memberid),
KEY (id) # or: UNIQUE KEY (id)
) ENGINE = MYISAM;
आईडी कॉलम पर एक कुंजी या अद्वितीय कुंजी इंडेक्स जोड़कर, ऑटो-इंक्रीमेंट कार्यक्षमता बनाए रखी जाती है, जबकि सदस्य कॉलम प्राथमिक कुंजी बन जाता है, जिससे सदस्य मूल्य के आधार पर कुशल प्रश्नों की अनुमति मिलती है।
सबसे अच्छा विकल्प प्रदर्शन और डिस्क स्थान के सापेक्ष महत्व पर निर्भर करता है। यदि प्रदर्शन सर्वोपरि है, तो ऑटो-इंक्रीमेंटिंग आईडी कॉलम को बनाए रखना और सदस्य आईडी पर एक इंडेक्स का उपयोग करना एक संतुलन प्रदान करता है:
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3