我有一个包含数据的表,我想将某些列更改为唯一的,它必须是唯一的,但我担心该列中有重复的数据,这会给我的数据库带来一些问题。
我想知道如果我将一列更改为没有唯一数据的唯一列会发生什么,我会丢失一些记录,只是收到一条错误消息,或者其他什么?
PS.:我正在使用 SQL Server
提前致谢。
我有一个包含数据的表,我想将某些列更改为唯一的,它必须是唯一的,但我担心该列中有重复的数据,这会给我的数据库带来一些问题。
我想知道如果我将一列更改为没有唯一数据的唯一列会发生什么,我会丢失一些记录,只是收到一条错误消息,或者其他什么?
PS.:我正在使用 SQL Server
提前致谢。
您将无法在具有重复数据的 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.
因此,您可以保持安静,不会丢失任何数据。
alter table YourTable add constraint UX_YourTable_YourColumn unique(YourColumn)
如果有重复数据,alter
将中止而不做任何更改。
您可以查询重复项,例如:
select YourColumn
, count(*) as DuplicateCount
from YourTable
group by
YourColumn
having count(*) > 1