小编Tom*_*esp的帖子

在MySQL中自动增长ENUM

我想优化表中的VARCHAR列仅包含很少的值(大多数情况下少于几十个,有时少于数百个)的值。因此,我希望将列转换为ENUMs,这是因为我无法期望值本身,因此我希望在需要时即时构建它们。

不幸的是,当插入不存在的值时,MySQL不会抛出错误,而是会存储错误NULL

例如:

CREATE TABLE `enumed` (
  `col` ENUM( 'a', 'b' )
);

INSERT INTO `enumed` ( `col`) VALUES ('b');
INSERT INTO `enumed` ( `col`) VALUES ('z');
Run Code Online (Sandbox Code Playgroud)

将存储带有'b'NULL没有错误的行。显然,我无法提供其他查询来获取值的空值,但会选择一个错误,在这种情况下,我将ENUM像下面那样扩展定义并重复查询。

ALTER TABLE `enumed` CHANGE `col` `col` ENUM( 'a', 'b', 'z' );
INSERT INTO `enumed` ( `col`) VALUES ('b');
Run Code Online (Sandbox Code Playgroud)

有什么方法可以实现这一目标,还是处理需要表的外部集合的痛苦方式?

mysql sql enums dynamic

5
推荐指数
1
解决办法
327
查看次数

标签 统计

dynamic ×1

enums ×1

mysql ×1

sql ×1