У меня есть таблица кучи - кластерный индекс не определен - (назовите ее table A
) с уникальным некластеризованным индексом в столбце, не допускающем значения NULL (вызовите column ID
и index IX
).
Я хотел бы использовать index IX
при определении ограничения первичного ключа на column ID
для table A
.
В документации где-то говорится:
Компонент Database Engine автоматически создает уникальный индекс, чтобы обеспечить выполнение требования уникальности ограничения PRIMARY KEY. Если кластеризованный индекс еще не существует в таблице или некластеризованный индекс не указан явно, создается уникальный кластеризованный индекс для обеспечения соблюдения ограничения PRIMARY KEY.
Я прочитал всю ALTER TABLE
документацию, но, похоже, нет синтаксиса для "некластеризованный индекс ... явно указан".
Попробовали определить некластеризованный index IX
и указать первичный ключ, а также пробовали различные комбинации оператора alter table ... add constraint ... primary key, но безрезультатно.
Имеет смысл, что мой индекс IX эквивалентен некластеризованному индексу, который SQL Server создает, когда я просто указываю столбец идентификатора в таблице изменений .... добавляю ограничение .... оператор первичного ключа (ID), но я бы предпочел не имея этот избыточный индекс, который SQL Server создает для меня, и скорее заставляю его использовать index IX
, который также состоит из включаемого списка столбцов.
Если я отброшу индекс, созданный SQL Server, ограничение первичного ключа также исчезнет.
Если бы можно было изменить индекс, создаваемый SQL Server, моя проблема была бы решена, но изменение, которое я хотел бы сделать с ним, требует удаления и воссоздания.
NOT NULL
иUNIQUE
эквивалентен столбцу с ограничениемPRIMARY KEY
. Зачем вообще это менять? - person ypercubeᵀᴹ   schedule 18.06.2014PRIMARY KEY
. - person ypercubeᵀᴹ   schedule 18.06.2014[ CLUSTERED | NONCLUSTERED ]
, которая следует заPRIMARY KEY
в объявлении первичного ключа (о чем, вероятно, и говорит @ypercube). Синтаксические диаграммы не показывают способа указать существующий индекс для использования с ограничением первичного ключа, вы можете только указать, будет ли [новый] индекс первичного ключа кластеризованным или некластеризованным. - person Andriy M   schedule 18.06.2014