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

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


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)