将列更改为唯一

时间:2013-08-23 12:37:28

标签: sql unique alter-table

我有一个包含数据的表,我想将某些列更改为唯一,它必须是唯一的,但我担心该列中存在重复数据,这会给我的数据库带来一些问题。

我想知道如果我将列更改为唯一且没有唯一数据会发生什么,我会丢失一些记录,只是收到错误消息或其他什么?

PS:我正在使用SQL Server

提前致谢。

2 个答案:

答案 0 :(得分:0)

alter table YourTable add constraint UX_YourTable_YourColumn unique(YourColumn)

如果存在重复数据,alter将中止而不进行任何更改。

您可以查询重复项:

select  YourColumn
,       count(*) as DuplicateCount
from    YourTable
group by
        YourColumn
having  count(*) > 1

答案 1 :(得分:0)

您将无法在具有重复数据的COLUMN上添加UNIQUE约束。

在SSMS中,错误消息类似于

The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.<Table>' and the index name '<constraintname>'. The duplicate key value is (<NULL>).


Could not create constraint. See previous errors.

所以你可以保持安静,不会丢失任何数据。