Computer >> Máy Tính >  >> Lập trình >> MySQL

Tại sao chúng ta không nên lưu trữ một số vào một cột MySQL ENUM?

MySQL lưu trữ các giá trị ENUM bên trong dưới dạng các khóa số nguyên (số chỉ mục) để tham chiếu đến các thành viên ENUM. Lý do chính của việc không lưu trữ các giá trị số nguyên trong cột ENUM là rất rõ ràng rằng MySQL kết thúc tham chiếu chỉ mục thay vì giá trị và ngược lại.

Ví dụ

Ví dụ sau có thể làm rõ điều đó -

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)

Ở đây, chúng tôi đã chèn ‘1’ dưới dạng một chuỗi và vô tình cũng chèn 1 dưới dạng số (không có dấu ngoặc kép). MySQL sử dụng nhầm lẫn đầu vào số của chúng tôi làm giá trị chỉ mục, tức là tham chiếu nội bộ đến mục đầu tiên trong danh sách thành viên (tức là 0).