SQL怎么在已经创建的表中插入一列,对这一列进行唯一约束。

ALTERTABLEEmployeesADD邮箱VarChar(20)ALTERTABLEEmployeeswithnocheckADDCONSTRAINTUQ_Emai... ALTER TABLE Employees
ADD 邮箱 VarChar(20)
ALTER TABLE Employees with nocheck
ADD CONSTRAINT UQ_Email1 UNIQUE (邮箱)

为什么出现
消息 1505,级别 16,状态 1,第 1 行
CREATE UNIQUE INDEX 语句终止,因为发现对象名称 'dbo.Employees' 和索引名称 'UQ_Email1' 有重复的键。重复的键值为 (<NULL>)。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。
语句已终止。

的错误????
展开
 我来答
abc8603
推荐于2017-12-16 · TA获得超过258个赞
知道小有建树答主
回答量:102
采纳率:100%
帮助的人:72.9万
展开全部
如果已经存在的表中是有数据的,那么你不能用一句SQL实现你的目标。
因为,如果表中已经有数据,那么你创建的新列,在已有的记录中要么是空值,要么是你设置的缺省值,因此所有记录中,该列的值都是一样的,因此对该列不能建立唯一性约束。
可采用两种做法:
1.删除原表的所有数据,就可以创建;
2.先不建立唯一约束,只建立列,然后给每行记录的该列赋于不同的值。
然后再设置该列为非空;
然后再为该列设置唯一约束。
追问
表中并没有数据啊
追答
ALTER TABLE Employees ADD 邮箱 VarChar(20) not null
后面要加 not null,否则不能 unique 索引
chenlw527
2012-11-20 · TA获得超过183个赞
知道答主
回答量:176
采纳率:0%
帮助的人:81.1万
展开全部
唯一索引列的数据不能有空值,数据不能重复
追问
那要怎么才能实现上面的目的。
追答
两种处理方式:
法1、删除要建唯一索引列的为空数据,对重复数据进行去重,或直接删除重复数据。
法2、对空数据补唯一值,对重复数据的列值重新赋予唯一值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jarlean
2012-11-21 · TA获得超过192个赞
知道答主
回答量:47
采纳率:0%
帮助的人:56.4万
展开全部
刚没发现,你忽略掉他就行了,因为已经创建成功了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上帝的帝2
2012-11-20 · 超过33用户采纳过TA的回答
知道答主
回答量:256
采纳率:0%
帮助的人:113万
展开全部
给你这个字段加个默认值试试
追问
好像是不是有一个可以忽略之前已经输入的数据的语句啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式