我想知道是否有可能在整个表中更改ENUM
值,以便在表示ENUM
值的所有行中,将更改设置为好。在整个表中更改MySQL枚举值的值
回答
如果你想改变一个枚举值:
假设你的旧枚举是:
ENUM('English', 'Spanish', 'Frenchdghgshd', 'Chinese', 'German', 'Japanese')
要更改用途:
-- Add a new enum value
ALTER TABLE `tablename` CHANGE `fieldname` `fieldname` ENUM
('English', 'Spanish', 'Frenchdghgshd', 'Chinese', 'German', 'Japanese', 'French');
-- Update the table to change all the values around.
UPDATE tablename SET fieldname = 'French' WHERE fieldname = 'Frenchdghgshd';
-- Remove the wrong enum from the definition
ALTER TABLE `tablename` CHANGE `fieldname` `fieldname` ENUM
('English', 'Spanish', 'Chinese', 'German', 'Japanese', 'French');
的MySQL可能会经历所有表中的行试图更新内容,我听说过有关计划优化的故事,但我不确定是否真的发生了。
所以你认为MySQL会自动通过数据库并进行所需的更改?我想另一种方法是使用'ALTER' *将新的'ENUM'值添加到集合中,然后使用'UPDATE'将新值的表中的任何实例替换为新值。最后,使用'ALTER'来删除旧的'ENUM'值。你认为这会起作用吗? – stefmikhail
enum并不真正在字段中存储字符串,它只是使用将保存enum中的值的最小整数,通常是tinyint。如果你改变一个枚举mysql中的字符串,通常时间不必对 – Johan
行做任何事情,所以它只是通过一个整数关联它? – stefmikhail
- 1. 更改枚举类型值
- 2. MySQL枚举空值
- 3. Mysql Select枚举值
- 4. 值在枚举列表中
- 5. 在运行时更改枚举值?
- 6. 来自mysql表的枚举值
- 7. 更新枚举值从1到0 mysql?
- 8. 更改mysql中的枚举类型
- 9. 当枚举值不在枚举中时赋予枚举的默认值
- 10. 修改枚举关联值
- 11. 将多个列表枚举值写入另一个枚举
- 12. 从枚举中获取整数值
- 13. 在枚举中创建枚举列表,并且不包含值
- 14. JCombobox在表中包含枚举值
- 15. 如何从MySQL表中选择多个枚举值?
- 16. 非整数文字的枚举值?
- 17. 枚举类型的任意整数值
- 18. 如何获取枚举的整数值?
- 19. 在整数值Rails模型中访问枚举值
- 20. 枚举初值
- 21. 测试单个值的[Flags]枚举值
- 22. Android枚举:从整数值编程设置枚举
- 23. Zend_Db的枚举值
- 24. 枚举到选择列表。更改<option>标记值
- 25. 将整数值赋给C中一个struct中的枚举?
- 26. 在调整枚举列表
- 27. 如何得到一个枚举的整数值,当我只有枚举
- 28. 带枚举的MySQL枚举
- 29. MYSQL - 哪个枚举执行更好的枚举('Y','N')或枚举('1','0')
- 30. 使用枚举值作为整数
使用更新声明? 'UPDATE table1 SET enum1 ='male'WHERE enum1 ='female'' – Johan
@Johan - 那会不会导致任何问题?我猜在使用'ALTER'来改变'ENUM'值本身之前就必须完成。但是会被允许吗?我想知道是因为我认为只允许在枚举列中选择指定的值?如果尚未指定新值... – stefmikhail
先执行alter,然后执行更新,则不能将枚举设置为未在“create table”/“alter table”语句中设置的值。 – Johan