Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ทำไมไม่ควรเก็บตัวเลขในคอลัมน์ ENUM ของ MySQL

MySQL จัดเก็บค่า ENUM ภายในเป็นคีย์จำนวนเต็ม (หมายเลขดัชนี) เพื่ออ้างอิงสมาชิก ENUM เหตุผลหลักที่ไม่ควรเก็บค่าตัวเลขในคอลัมน์ ENUM คือ MySQL จะอ้างอิงถึงดัชนีแทนค่า และในทางกลับกัน

ตัวอย่าง

ตัวอย่างต่อไปนี้ชี้แจงได้:

mysql> CREATE TABLE enmtest(Val ENUM('0','1','2'));
Query OK, 0 rows affected (0.18 sec)
mysql> INSERT INTO enmtest VALUES ('1'), (1);
Query OK, 2 rows affected (0.19 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> SELECT * FROM enmtest;
+-----+
| Val |
+-----+
| 1   |
| 0   |
+-----+
2 rows in set (0.00 sec)

ที่นี่ เราแทรก '1' เป็นสตริง และโดยบังเอิญแทรก 1 เป็นตัวเลข (ไม่มีเครื่องหมายคำพูด) MySQL นำอินพุตตัวเลขของเราไปใช้เป็นค่าดัชนี กล่าวคือ การอ้างอิงภายในไปยังรายการแรกในสมาชิก (คือ '0')