mysql - 如何将具有预定义值的 varchar(191) 列转换为 MySQL 中的枚举?
问题描述
我有一个 MySQL 表,如下所示:
CREATE TABLE `User` (
`id` char(25) CHARACTER SET utf8 NOT NULL,
`role` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CUSTOMER',
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
在表的所有行中,role
要么具有值,'CUSTOMER'
要么具有'ADMIN'
。我现在想将该列的类型更改为枚举并在所有行中保留相同的数据。
实现这一目标的 SQL 语句是什么?
解决方案
刚刚自己找到了答案:
ALTER TABLE User MODIFY COLUMN role ENUM('ADMIN', 'CUSTOMER') DEFAULT 'CUSTOMER';
推荐阅读
- google-apps-script - 在 Google 电子表格中创建自动化以从空白文件复制并根据表格重命名?
- python - 如何在 Python 或 TensorFlow 中使用 LUA 脚本?
- c# - 在类中使用 IHttpContextAccessor 是否正确?
- azure - 无论如何我们可以检查GRS复制中的区域和区域的详细信息
- r - R-usmap:如何将标签更改为更小?
- html - 如何在 jQuery 数据表中将固定宽度设置为单列
- mysql - Knex.js - 如何使用池中的最大连接数
- haproxy - Haproxy SSL 终止:Layer4 连接问题,信息:“连接被拒绝”
- python - 如何在 Pandas 中使用默认索引作为数据透视表创建数据透视表?
- laravel - fetch() 函数在方法中不起作用