为什么ENUM不在MySQL中存储多个值?

时间:2016-07-11 10:56:03

标签: mysql database enums insert

我想使用 MySQL 在表格中使用 ENUM 功能。

我创建了一个 tbl_test id 作为主键, enum_col 字段作为 ENUM 数据类型。

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

当我尝试存储单枚举值时,它已插入但当我尝试存储多个枚举值时,它会抛出 SQL错误

错误:

 Data truncated for column 'enum_col' at row 1

单个ENUM值(正确):

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

多个ENUM值(FAILED):

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

是否有想法在 ENUM 数据类型中存储多个值

2 个答案:

答案 0 :(得分:2)

这是因为你只能在其中存储一个值,实际上你绝对应该只在任何类型的列中存储一个值。

使用单独的表格。然后,您可以使用多个记录存储尽可能多的值。例如:

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

答案 1 :(得分:1)

如果要存储多个值,则应使用SET数据类型而不是ENUM

http://dev.mysql.com/doc/refman/5.7/en/set.html