首页 > 解决方案 > 如何将具有预定义值的 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 语句是什么?

标签: mysqlsql

解决方案


刚刚自己找到了答案:

ALTER TABLE User MODIFY COLUMN role ENUM('ADMIN', 'CUSTOMER') DEFAULT 'CUSTOMER';

推荐阅读