MySQL-এ কম্পোজিট বা সিঙ্গেল কলামের ওপর থেকে UNIQUE কনস্ট্রেইন্ট সরাতে ALTER TABLE ... DROP INDEX ব্যবহার করুন।
সিনট্যাক্স
ALTER TABLE table_name DROP INDEX index_name;
দ্রষ্টব্য: MySQL-এ UNIQUE কনস্ট্রেইন্ট আন্ডারলেয়িংলি একটি UNIQUE INDEX হিসেবে ইমপ্লিমেন্টেড। তাই ইন্ডেক্সের নাম দিয়ে ড্রপ করতে হয়।
উদাহরণ
CREATE TABLE remove_unique_demo (
id INT,
name VARCHAR(100),
age INT,
is_greater_than_18 BOOL,
UNIQUE KEY uniq_id_age (id, is_greater_than_18)
);
কনস্ট্রেইন্ট যাচাই
SHOW CREATE TABLE remove_unique_demo;
আউটপুট (আংশিক)
CREATE TABLE `remove_unique_demo` (
`id` int(11) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`is_greater_than_18` tinyint(1) DEFAULT NULL,
UNIQUE KEY `uniq_id_age` (`id`,`is_greater_than_18`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
ইন্ডেক্স নাম জানা
ইন্ডেক্সের নাম জানতে SHOW INDEX FROM table_name বা SHOW CREATE TABLE ব্যবহার করুন। উপরের উদাহরণে ইন্ডেক্সের নাম uniq_id_age (MySQL অটো জেনারেটেড)।
ইউনিক কনস্ট্রেইন্ট সরানো
ALTER TABLE remove_unique_demo DROP INDEX uniq_id_age;
পরিবর্তন যাচাই
SHOW CREATE TABLE remove_unique_demo;
ফলাফল — UNIQUE KEY অনুপস্থিত
CREATE TABLE `remove_unique_demo` (
`id` int(11) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`is_greater_than_18` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PRIMARY KEY সরানো (সতর্কতা: নন-নাল কলাম লাগবে)
ALTER TABLE table_name DROP PRIMARY KEY;
সাধারণ ভুল
-- ভুল: ALTER TABLE t DROP UNIQUE (col1, col2); -- MySQL-এ এই সিনট্যাক্স সাপোর্টেড নয়
-- সঠিক: ALTER TABLE t DROP INDEX index_name;
ইন্ডেক্সের নাম জানতে: SHOW INDEX FROM table_name WHERE Non_unique = 0;