我們為什麼不應該將數字儲存到 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)。

更新於: 20-Jun-2020

1K+ 檢視次數

開始您的 事業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.