Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Какой индекс используется для FOREIGN KEY?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
В большинстве случаев PRIMARY KEY.
Но не всегда.
BOL
Ограничение FOREIGN KEY не обязательно должно быть связано с ограничением PRIMARY KEY в другой таблице. Кроме того, с помощью этого ограничения могут указываться столбцы ограничения UNIQUE в другой таблице.

Столкнулся с такой проблемой - в таблице есть несколько индексов, из них один PRIMARY KEY (кластерный), и один уникальный, созданный по тому же столбцу, что и PRIMARY KEY, но содержащий ещё 1 включаемый столбец типа varchar(max).

Так вот, SQL Server выбрал его в для обеспечения внешнего ключа, а не первичный ключ.
Можно ли каким-то образом заставить все внешние ссылки ссылаться на первичный ключ, а не на этот индекс, без удаления констрейнтов?
7 ноя 12, 13:31    [13432672]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
А зачем, собственно?
7 ноя 12, 13:32    [13432687]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jovanny
Так вот, SQL Server выбрал его в для обеспечения внешнего ключа, а не первичный ключ.

Что значит "выбрал его" ?
Где вы видите этот выбор, если при создании FOREIGN KEY задаются только поля ?
7 ноя 12, 13:35    [13432715]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
меньше - лучше
Guest
Гавриленко Сергей Алексеевич
А зачем, собственно?

+1
уникальный индекс всяко меньше кластерного.

ЗЫ

кстати, а зачем вам такой уникальный индекс?
7 ноя 12, 13:36    [13432723]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
UNIQUE_CONSTRAINT_NAME
Guest
Glory
Jovanny
Так вот, SQL Server выбрал его в для обеспечения внешнего ключа, а не первичный ключ.

Что значит "выбрал его" ?
Где вы видите этот выбор, если при создании FOREIGN KEY задаются только поля ?


select UNIQUE_CONSTRAINT_NAME from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS where CONSTRAINT_NAME = ...
?
7 ноя 12, 13:48    [13432828]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Glory
Jovanny
Так вот, SQL Server выбрал его в для обеспечения внешнего ключа, а не первичный ключ.

Что значит "выбрал его" ?
Где вы видите этот выбор, если при создании FOREIGN KEY задаются только поля ?


При попытке удалить этот индекс выдаётся ошибка:

An explicit DROP INDEX is not allowed on index '??????????'. It is being used for FOREIGN KEY constraint enforcement.
7 ноя 12, 13:49    [13432833]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
Гавриленко Сергей Алексеевич
А зачем, собственно?

Мне просто нужно удалить этот индекс.
7 ноя 12, 13:50    [13432849]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
меньше - лучше
Guest
Jovanny
Glory
пропущено...

Что значит "выбрал его" ?
Где вы видите этот выбор, если при создании FOREIGN KEY задаются только поля ?


При попытке удалить этот индекс выдаётся ошибка:

An explicit DROP INDEX is not allowed on index '??????????'. It is being used for FOREIGN KEY constraint enforcement.

придется пересоздавать FK.
7 ноя 12, 13:50    [13432850]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
меньше - лучше
кстати, а зачем вам такой уникальный индекс?

Так уж получилось :). Вот я его и пытаюсь удалить.
7 ноя 12, 13:52    [13432869]     Ответить | Цитировать Сообщить модератору
 Re: Какой индекс используется для FOREIGN KEY?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
меньше - лучше
придется пересоздавать FK.

Таки да, пришлось. Затормозил систему на некоторое время.
7 ноя 12, 13:53    [13432880]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить