MySQL - 在满足条件时添加具有默认值的新列

时间:2016-07-11 16:41:33

标签: mysql

我有一个现有的请求表,我想在其中添加一个新列request_type。我想将某个列的默认值设置为A,当某个列不为null时,否则为B.我编写了以下查询,显示MySQL版本5.7.9的语法错误 -

alter table requests
add column request_type enum('A','B','C') collate utf8_unicode_ci not null default (case when userid is not null then 'A' else 'B' end)

1 个答案:

答案 0 :(得分:1)

MySQL不支持DEFAULT的表达式。

但您可以在GENERATED列中使用MySQL 5.7的新功能:http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

如果您使用的是旧版本的MySQL,则必须使用触发器根据用户ID更新枚举列。