MySQL ENUM টাইপ নিচের অ্যাট্রিবিউটগুলো দিয়ে ডিফাইন করা যায়, যা অনুমোদিত মানগুলোকে প্রভাবিত করে:
- NOT NULL — ডিফল্টভাবে ENUM-এ NULL মান অনুমোদিত। NULL বাধা দিতে NOT NULL অ্যাট্রিবিউট ব্যবহার করতে হয়।
- NULL — DEFAULT NULL-এর সমার্থক। NULL-এর সূচক মান NULL।
- DEFAULT — মান নির্দিষ্ট না করলে ডিফল্ট মান সেট করে। INSERT স্টেটমেন্টে এই ফিল্ডের মান না দিলে DEFAULT-এর পশ্চাদ্দের মান ইনসার্ট হবে। DEFAULT এক্সপ্রেশনে ফাংশন ব্যবহার করা যায় না। ENUM-এ ডিফল্ট মান হিসেবে NULL এবং খালি স্ট্রিং ('') ব্যবহার করা যায়।
উদাহরণ
নিচের উদাহরণ ENUM ডেটা টাইপের সাথে এই অ্যাট্রিবিউটগুলো ব্যবহারের 모습을 দেখাবে।
mysql> SET SESSION sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE enumtesting(e_value ENUM('a','1') NOT NULL DEFAULT '1', id TINYINT NOT NULL);
Query OK, 0 rows affected (0.23 sec)
mysql> INSERT INTO enumtesting(e_value, id) VALUES('1', '1'), ('', 2), (NULL, 3), ('abc', 4);
Query OK, 4 rows affected, 3 warnings (0.09 sec)
Records: 4 Duplicates: 0 Warnings: 3
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------+
| Warning | 1265 | Data truncated for column 'e_value' at row 2 |
| Warning | 1048 | Column 'e_value' cannot be null |
| Warning | 1265 | Data truncated for column 'e_value' at row 4 |
+---------+------+----------------------------------------------------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM enumtesting;
+---------+----+
| e_value | id |
+---------+----+
| 1 | 1 |
| | 2 |
| | 3 |
| | 4 |
+---------+----+
4 rows in set (0.00 sec)
mysql> INSERT INTO enumtesting(id) VALUES(5);
Query OK, 1 row affected (0.11 sec)
mysql> SELECT * FROM enumtesting;
+---------+----+
| e_value | id |
+---------+----+
| 1 | 1 |
| | 2 |
| | 3 |
| | 4 |
| 1 | 5 |
+---------+----+
5 rows in set (0.00 sec)
mysql> SELECT e_value, e_value+0 AS enum_index, id FROM enumtesting;
+---------+------------+----+
| e_value | enum_index | id |
+---------+------------+----+
| 1 | 2 | 1 |
| | 0 | 2 |
| | 0 | 3 |
| | 0 | 4 |
| 1 | 2 | 5 |
+---------+------------+----+
5 rows in set (0.00 sec)
এখানে NOT NULL DEFAULT '1' থাকায় NULL ইনসার্ট করলে এরর দিয়েছে, খালি স্ট্রিং এবং অবৈধ মান 'abc'-এর জন্য ডেটা ট্রানকেট হয়েছে (সতর্কতা), এবং ডিফল্ট মান '1' (সূচক ২) ইনসার্ট হয়েছে।