我试图在SQL Server 2008中的一个数据库表上添加一个新的唯一索引。这是一个现有表和我希望唯一索引已经有一些重复的列值。已有数据库表中的唯一索引
我可以为该列设置唯一索引吗?如果是这样,怎么样?
我试图在SQL Server 2008中的一个数据库表上添加一个新的唯一索引。这是一个现有表和我希望唯一索引已经有一些重复的列值。已有数据库表中的唯一索引
我可以为该列设置唯一索引吗?如果是这样,怎么样?
如果列已经有重复的值,那么我会建议你创建一个独特的复合键代替。
例如 因此,要处理这个问题与此表的设计,你需要在表上创建客户ID唯一约束/产品ID列:
创建CustomerProducts唯一索引cust_products_unique(客户ID,产品ID)
因此,在本质上字段的组合确保索引是唯一的。
问候
如果表中已经有重复值,则不能使用UNIQUE索引设置此列,除非您删除包含该列重复值的记录。这转到UNIQUE的定义。
没有顾名思义,唯一的索引说,关键必须是唯一的。所以,你不能
首先,你是要去需要删除您列重复的值,然后就可以在其上创建唯一索引。所以我们假设你的表有2列,id
和column1
。要删除重复值,您需要选择一个,它可以是随机的或有一定的顺序。因此,这将是这样的:
WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY column1 ORDER BY Id) Corr
FROM YourTable
)
DELETE FROM CTE
WHERE Corr > 1
CREATE UNIQUE INDEX I_Unique ON YourTable(Column1)
可能不会在SQL Server 2008是真实的,但是你可以使用Management Studio这样做在以后的版本,如2014年