我有一个名为"负责任"的列,这是一个set
类型的数据,可以具有以下值:
`responsable` SET('creator', 'owner', 'amdmin', 'dev', 'client', 'operator')
默认情况下,此字段选择"客户端"和"运算符",因此我尝试了以下操作:
CHANGE COLUMN `responsable` `responsable`
SET('creator', 'owner', 'amdmin', 'dev', 'client', 'operator')
NULL DEFAULT 'client','operator';
这不起作用("运算符"附近的错误(
如何在设置类型中设置1个以上的默认值?
SET 由单个字符串值表示。
SET
是一个字符串对象,可以有零个或多个值,每个值 必须从以下情况下指定的允许值列表中选择 表已创建。SET
由多个集合组成的列值 成员由逗号 (,( 分隔的成员指定。一个 这样做的结果是SET
成员价值观本身不应该 包含逗号。
试试这个:
ALTER TABLE my_table CHANGE COLUMN `responsable` `responsable`
SET('creator', 'owner', 'amdmin', 'dev', 'client', 'operator')
NULL DEFAULT 'client,operator';
数据库小提琴演示
但是 - 我建议根本不使用 SET 数据类型。由于它只不过是一个逗号分隔的列表,因此此处描述的大多数缺点都与它有关。请考虑规范化架构并使用单独的表responsibilities
。
例如:如果具有 user_id = 253
的用户具有职责 client
和 operator
,则responsibilities
表中将有两个条目:
user_id | responsibility
--------|---------------
253 | client
253 | operator