唯一索引可确保索引键列中的值是唯一的。 唯一约束保证没有重复的值可以插入到创建约束的列中。创建唯一约束后,会在列上自动创建相应的唯一索引。
问题:
答案 0 :(得分:1)
否,索引中列的值必须在该索引中创建一组唯一的数据。
否,您不能在具有重复值的表上创建唯一索引。
最简单的发现方法是尝试(我建议这样做,这是一种很好的学习方式):
CREATE TABLE dbo.SomeTable (SomeInt int, AnotherInt int);
GO
INSERT INTO dbo.SomeTable (SomeInt,
AnotherInt)
VALUES (1,1),
(1,2),
(2,1);
GO
--Create a unique index on a column with duplicate values
CREATE UNIQUE INDEX UQ_SomeInt ON dbo.SomeTable(SomeInt); --fails
GO
--Create a unique index on the 2 columns, as they are unique
CREATE UNIQUE INDEX UQ_Some_AnotherInt ON dbo.SomeTable(SomeInt, AnotherInt); --Succeeds
GO
--Try to insert a duplicate value
INSERT INTO dbo.SomeTable (SomeInt,
AnotherInt)
VALUES(2,1); --fails
GO
SELECT *
FROM dbo.SomeTable
GO
DROP TABLE dbo.SomeTable;
答案 1 :(得分:1)
如果列上有唯一索引,是否可以插入重复值 并没有唯一的约束?
通常,当列上存在唯一索引时,不能插入重复的值。例外是:
1)使用IGNORE_DUP_KEY
选项创建了索引
2)对非聚集索引进行过滤,以使重复值不满足索引WHERE
子句
该列中任何重复项的现有重复项如何? 创建唯一索引或唯一约束?
否,除了上面提到的过滤索引。