我有一个表,ENUM
其中包含 3 个值:one
, two
, three
. 该表已包含数据,但目前未使用ENUM
值,因此我想将其从. 结果将是一个只有 2 个值的:, .two
ENUM
ENUM
one
three
我可以只使用一个ALTER TABLE
声明并说:
ALTER TABLE 'tablename' CHANGE 'enumname' ENUM('one', 'three');
枚举保存为整数,因此您的所有行enum="one"
实际上都等于1
、enum="two"
is2
和enum="tree"
is 3
。
如果枚举名称匹配,似乎 MySQL 正在尽一切努力更改这些值,因此您只需要确保没有带有“两个”的行
http://sqlfiddle.com/#!2/ef76d/1
CREATE TABLE `tablename` (`name` VARCHAR(32), `enumname` ENUM('one', 'two', 'three'));
INSERT INTO `tablename` VALUES ('one', 'one'),('two', 'two'),('three', 'three');
DELETE FROM `tablename` WHERE `enumname`=2;
ALTER TABLE `tablename` MODIFY `enumname` ENUM('one', 'three');
尝试这个 :-
alter table tablename
change `columname` `columname` enum ('one', 'three');
它工作正常。
是的,你可以这么做。这是一个例子:
ALTER TABLE `database`.`tablename`
CHANGE `enumname` `enumname` ENUM('one','two')
CHARSET utf8 COLLATE utf8_general_ci NULL;
是的你可以。在您的测试环境拳头上尝试一下,因为大表可能需要一段时间?