Учитывая видКолонка Игнорируется Создание уникального индекса
CREATE VIEW MyView WITH SCHEMABINDING AS
SELECT A, B, Year, t1.FKId, C, D, COUNT_BIG(*) as Cnt, SUM(W) As Wgt
FROM [dbo].[T1] t1
INNER JOIN [dbo].T2 t2 ON t1.FKId = t2.Id
INNER JOIN [dbo].T3 t3 ON t1.FKId = t3.FKId AND t1.FKId = t3.FKId
GROUP BY A, B, Year, t1.FKId, C, D
Когда я пытаюсь сделать что индексированного представление
CREATE UNIQUE CLUSTERED INDEX IX_CLU_My
ON MyView (FKId, A, B, Year, C, D)
SQL Server жалуется дубликат ключа, но сообщение об ошибке учитывает только 5 из 6 столбцов указаны:
Операция CREATE UNIQUE INDEX завершена, поскольку был найден дубликат ключа для имени объекта 'dbo .MyView 'и имя индекса' IX_CLU_My '. Значение повторяющегося ключа - (934, 1, 6, 2014, 1).
Фактические данные, содержащиеся в представлении, соответствующем первых 4-х ключей:
FKId A B Year C D
934 1 6 2014 1 5
934 1 6 2014 1 15
934 1 6 2014 2 5
934 1 6 2014 3 5
Учитывая первые 5 столбцов, то сообщение об ошибке будет правильным. Почему 6-й столбец не рассматривается для уникальности?
У вас осталось только 4 строки с вашего вида? –
@ RickS: Нет, это те, которые относятся к этому конфликту. Всего в представлении всего несколько тысяч строк. –