एकाधिक कॉलम पर संयुक्त यूनिक कंस्ट्रेंट बनाना
दो या अधिक कॉलम के **संयोजन** को यूनिक बनाने के लिए कम्पोजिट UNIQUE KEY परिभाषित करें।
सिंटैक्स
CREATE TABLE table_name (
...
UNIQUE KEY constraint_name (col1, col2, ...)
);
उदाहरण: छात्र नाम + मोबाइल नंबर यूनिक
CREATE TABLE enforceCompoundUniqueness (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(40) NOT NULL,
StudentMobileNumber VARCHAR(12) NOT NULL,
UNIQUE KEY StudentName_StudentMobileNumber (StudentName, StudentMobileNumber)
);
टेस्ट: डुप्लिकेट डालने का प्रयास
INSERT INTO enforceCompoundUniqueness (StudentName, StudentMobileNumber)
VALUES ('Larry', '2322245676'); -- सफल
INSERT INTO enforceCompoundUniqueness (StudentName, StudentMobileNumber)
VALUES ('Larry', '2322245676'); -- एरर!
-- ERROR 1062 (23000): Duplicate entry 'Larry-2322245676' for key 'StudentName_StudentMobileNumber'
INSERT INTO enforceCompoundUniqueness (StudentName, StudentMobileNumber)
VALUES ('Sam', '6475746455'); -- सफल (अलग नाम)
परिणाम
+-----------+-------------+---------------------+ | StudentId | StudentName | StudentMobileNumber | +-----------+-------------+---------------------+ | 1 | Larry | 2322245676 | | 3 | Sam | 6475746455 | +-----------+-------------+---------------------+
महत्वपूर्ण बिंदु
- यूनिकनेस **संयोजन** पर है, व्यक्तिगत कॉलम पर नहीं। 'Larry' अलग नंबर के साथ अनुमत है।
NULLमान: MySQL यूनिक इंडेक्स में एकाधिकNULLअनुमत करता है (प्रत्येकNULLअलग माना जाता है)।- मौजूदा टेबल पर जोड़ना:
ALTER TABLE tbl ADD UNIQUE KEY uk_name (col1, col2); - नाम देना (
StudentName_StudentMobileNumber) बाद मेंDROP INDEXके लिए उपयोगी।