COMPOSITE UNIQUE CONSTRAINT যোগ করা
MySQL-এ দুটি বা একাধিক কলামের কম্বিনেশনকে ইউনিক করতে ALTER TABLE ... ADD UNIQUE ব্যবহার করা হয়। এটি কম্পোজিট ইউনিক কনস্ট্রেইন্ট তৈরি করে।
সিনট্যাক্স
ALTER TABLE yourTableName ADD UNIQUE yourUniqueName (yourColumnName1, yourColumnName2, ...);
উদাহরণ: টেবিল তৈরি
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName VARCHAR(100),
StudentLastName VARCHAR(100),
StudentAge INT,
StudentPhoneNumber VARCHAR(20)
);
ইউনিক কনস্ট্রেইন্ট যোগ করা (FirstName + PhoneNumber)
mysql> ALTER TABLE DemoTable ADD UNIQUE DemoTable_unique_StudentFirstName_StudentPhoneNumber (StudentFirstName, StudentPhoneNumber); Query OK, 0 rows affected (0.40 sec)
টেস্ট: ডুপ্লিকেট ইনসার্ট করার চেষ্টা
mysql> INSERT INTO DemoTable(StudentFirstName,StudentLastName,StudentAge,StudentPhoneNumber)
VALUES('John','Doe',21,'9878567878'); -- OK
mysql> INSERT INTO DemoTable(...) VALUES('John','Smith',23,'7654674545'); -- OK
mysql> INSERT INTO DemoTable(...) VALUES('John','Brown',21,'9878567878');
-- ERROR 1062 (23000): Duplicate entry 'John-9878567878' for key 'DemoTable_unique_StudentFirstName_StudentPhoneNumber'
মौजूद রেকর্ড
+-----------+------------------+-----------------+------------+--------------------+ | StudentId | StudentFirstName | StudentLastName | StudentAge | StudentPhoneNumber | +-----------+------------------+-----------------+------------+--------------------+ | 1 | John | Doe | 21 | 9878567878 | | 2 | John | Smith | 23 | 7654674545 | +-----------+------------------+-----------------+------------+--------------------+
নোট
- ইউনিক নাম (এখানে
DemoTable_unique_StudentFirstName_StudentPhoneNumber) ঐচ্ছিক, না দিলে MySQL অটো জেনারেট করে। - NULL মানवाले রো একাধিক থাকতে পারে (NULL != NULL ইউনিক চেকে)।