प्रस्तावना के रूप में, ध्यान दें कि प्राथमिक कुंजी को एक कॉलम होने की आवश्यकता नहीं है:इसमें कई कॉलम शामिल हो सकते हैं:इसे समग्र कुंजी के रूप में जाना जाता है। यह भी ध्यान रखें कि प्रत्येक तालिका में AUTO_INCREMENT
नहीं होता है /IDENTITY
कॉलम बिल्कुल, और आपके पास एक UNIQUE
. हो सकता है कंपोजिट-कुंजी के अंदर एक कॉलम पर वैसे भी बाधा।
-
कोई नहीं है - लेकिन DBMS के लिए निषेध . का कोई मतलब नहीं है ऐसी अतिरेक या तो क्योंकि आपको उस स्थिति को संभालने के लिए अतिरिक्त तर्क और जटिलता की आवश्यकता होगी, जबकि दोनों के होने से कोई वास्तविक नुकसान नहीं हुआ है (दो इंडेक्स बनाए रखने के प्रदर्शन प्रभाव के अलावा)।
-
जैसा कि ऊपर कहा गया है:क्योंकि अवसर लागत यह पता लगाने और रोकने के लिए कि अतिरेक इसके लायक नहीं है।
एक और बात पर विचार करना है कि तालिका की प्राथमिक-कुंजी परिभाषा अपरिवर्तनीय नहीं है और इसलिए परिवर्तन के अधीन है। एक टेबल में पहले से ही UNIQUE
. वाले कॉलम हो सकते हैं बाधा सेट-अप और फिर डेटाबेस-डिज़ाइनर इसे प्राथमिक-कुंजी की एक नई परिभाषा में शामिल करने का निर्णय लेता है - यह उपयोगकर्ता के लिए अमित्र होगा कि पहले पुराने अवरोध को हटा दिया जाए, खासकर यदि उनके एप्लिकेशन सिस्टम के अन्य भाग निर्भर करते हैं वह अद्वितीय बाधा वहां मौजूद है (उदाहरण के लिए 1:0..1
संबंध परिभाषा)।
(साथ ही, AUTO_INCREMENT
UNIQUE
. के साथ परस्पर-समावेशी नहीं है या PRIMARY KEY
:आप AUTO_INCREMENT
. का उपयोग कर सकते हैं गैर-अद्वितीय स्तंभों के साथ (उदा. यदि AUTO_INCREMENT
तालिका में पहले से ही डेटा होने के बाद जोड़ा जाता है), और इसके विपरीत PRIMARY KEY
अन्यत्र से प्राप्त अद्वितीय मानों का उपयोग कर सकते हैं, जैसे विदेशी कुंजी के रूप में अन्य पहचान स्तंभ (समग्र प्राथमिक कुंजियों में विदेशी कुंजियां हो सकती हैं!) आपको कभी नहीं . करना चाहिए इसे हकीकत में करें))।