- Можно ли вставить повторяющиеся значения, если у нас есть уникальный индекс для столбца и нет уникального ограничения?
Нет, значения столбцов в индексе должны создавать уникальный набор данных в этом индексе.
Как насчет существующих дубликатов в любом столбце - позволит ли он создать уникальный индекс или уникальное ограничение?
Нет, вы не можете создать уникальный индекс для таблицы с дублирующимися значениями.
Самый простой способ узнать это - попробовать (я предлагаю для таких вещей это отличный способ обучения):
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;