在mysql中,向字段添加mysql唯一约束

在mysql中,向字段添加mysql唯一约束,mysql,Mysql,emp_id列最初没有唯一的约束。我想给它添加唯一的约束。对于emp_id,该行的许多行包含NULL或空。如果我在下面输入查询,它将显示错误 alter table users_userprofile add unique(emp_id); ERROR 1062 (23000): Duplicate entry '' for key 'emp_id' MySQL对于添加唯一约束的多个NULLs没有问题。但是,如错误消息所示,不允许使用多个空字符串'。作为一种解决方法,您可以首先更新emp\u

emp_id列最初没有唯一的约束。我想给它添加唯一的约束。对于emp_id,该行的许多行包含NULL或空。如果我在下面输入查询,它将显示错误

alter table users_userprofile add unique(emp_id);
ERROR 1062 (23000): Duplicate entry '' for key 'emp_id'

MySQL对于添加唯一约束的多个
NULL
s没有问题。但是,如错误消息所示,不允许使用多个空字符串
'
。作为一种解决方法,您可以首先更新
emp\u id
列,将空字符串替换为
NULL

UPDATE users_userprofile
SET emp_id = NULL
WHERE emp_id = '';
然后,运行alter语句:

ALTER TABLE users_userprofile ADD UNIQUE(emp_id);

@RaymondNijland OP的服务器模式不能这样做,否则MySQL就不会抱怨多个
'
,对吧?我给你兄弟+1。但是,扮演魔鬼代言人的角色,这样做会使空字符串在数据库中的每个表中都以这种方式运行,可能OP不希望这样。是的,完全同意删除注释以避免进一步混淆并防止人们运行不需要的“魔鬼SQL”如果在运行其他查询之前未在会话上恢复sql_模式,这确实会导致错误/问题。。