UNIQUE কনস্ট্রেইন্ট দিয়ে কম্পাউন্ড ইউনিকিটি
একাধিক কলামের কম্বিনেশনকে ইউনিক করতে টেবিল তৈরির সময় বা পরে UNIQUE কনস্ট্রেইন্ট যোগ করুন।
সিনট্যাক্স (টেবিল তৈরির সময়)
CREATE TABLE yourTableName (
yourColumnName1 datatype,
yourColumnName2 datatype,
yourColumnName3 datatype,
...
UNIQUE yourConstraintName(yourColumnName2, yourColumnName3)
);
উদাহরণ
টেবিল তৈরি (UNIQUE সহ)
mysql> create table UniqueDemo (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(100),
-> StudentAge int,
-> StudentMarks int,
-> UNIQUE age_NameConstraint(StudentName, StudentAge)
-> );
Query OK, 0 rows affected (0.76 sec)
ইন্ডেক্স/কনস্ট্রেইন্ট যাচাই
mysql> SHOW INDEX FROM UniqueDemo;
আউটপুট
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | +------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | uniquedemo | 0 | PRIMARY | 1 | StudentId | A | 0 | NULL | NULL | | BTREE | | | YES | | uniquedemo | 0 | age_NameConstraint | 1 | StudentName | A | 0 | NULL | NULL | YES | BTREE | | | YES | | uniquedemo | 0 | age_NameConstraint | 2 | StudentAge | A | 0 | NULL | NULL | YES | BTREE | | | YES | +------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
age_NameConstraint কম্পোজিট ইউনিক ইন্ডেক্স তৈরি হয়েছে। StudentName এবং StudentAge এর যেকোনো ডুপ্লিকেট কম্বিনেশন রিজেক্ট হবে।
বादে কনস্ট্রেইন্ট যোগ করা
ALTER TABLE yourTable ADD UNIQUE constraint_name (col1, col2);
লাভ: ডেটা ইন্টিগ্রিটি নিশ্চিত, ডুপ্লিকেট এন্ট্রি অটোমেটিক রোধ, কোয়েরি পারফরম্যান্স বেড়ে (ইন্ডেক্স তৈরি হয়)।