2016-07-11 31 views
0

我想使用ENUM功能表中使用MySQL爲什麼ENUM不在MySQL中存儲多個值?

我已經創建了一個表具有ID作爲主鍵和enum_col字段作爲ENUM數據類型tbl_test

CREATE TABLE tbl_test(
id INT NOT NULL AUTO_INCREMENT, 
enum_col ENUM('a','b','c') NOT NULL, 
PRIMARY KEY (id) 
); 

當我嘗試存儲單一枚舉值,它得到了插入的,但是當我嘗試存儲多個枚舉值則拋出SQL錯誤

ERROR:

Data truncated for column 'enum_col' at row 1 

單ENUM值(CORRECT):

INSERT INTO tbl_test(id, enum_col) values(1, 'a'); 

多ENUM值(FAILED):

INSERT INTO tbl_test(id, enum_col) values(2, 'a,b'); 

任何想法存儲多個值ENUM數據類型?

+0

ENUM是值類型,而不是一組或數組類型。而不是存儲值的數組,最好是規範化數據,以便可以使用MySQL中的所有常規查詢和完整性功能。 – reaanb

回答

1

那是因爲你只能在其中存儲一個值,實際上你絕對應該只在任何類型的列中存儲一個值。

使用單獨的表格。然後,您可以使用多個記錄存儲儘可能多的值。例如:

tbl_test 
-------- 
id | name 
1 | test_X 
2 | test_Y 
3 | test_Z 


tbl_test_enums 
-------------- 
test_id | enum_value 
1  | a 
1  | b 
2  | a 
3  | c 
+0

謝謝。 @juergen。如果我使用SET而不是ENUM,因爲值不重複,是否好? – iNikkz

+1

切勿將多個值存儲在單個列中!不要。這對性能和糟糕的桌子設計是不利的。 –

+2

請仔細閱讀這篇文章:[**是否在數據庫列中存儲分隔列表真的很糟糕?](http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in -a數據庫列,真的,那壞)。 @iNikkz – 1000111

相關問題