2015-01-29 2 views
3

Есть ли способ настроить псевдоним для индексов/первичных ключей? Другими словами, у MySql есть мой первичный ключ с именем «PRIMARY», и я хочу назвать его чем-то еще, чтобы сделать его совместимым с моим программным обеспечением. Я знаю, что первичные ключи должны быть названы «ПЕРВИЧНЫМ» (см. here и here для обсуждения). Поэтому я подумал, что если бы был способ сделать псевдоним первичного ключа, это решило бы мою проблему.MySql - псевдоним для имени индекса (PRIMARY)

ПРИМЕЧАНИЕ: Я не говорю о имени столбца, а о фактическом имени индекса, как показано в столбце «Key_name» при запуске команды «show indexes from».

2/29/2015 Редактировать в ответ на случай RandomSeed: Столбец PRIMARY KEY, скажем, ithkey. В SQLServer имя индекса - «ITHKEY», поэтому наш код использовал «ITHKEY» в качестве подсказки индекса. Но, конечно, это не сработает с моей текущей настройкой MySql, потому что индекс/первичный ключ для ithkey называется «PRIMARY», а не «ITHKEY». Я мог бы, я полагаю, изменить свой код на ссылку «PRIMARY» в подсказках индекса, просто пытался избежать этого.

+1

Не используйте параметр «первичный ключ», просто создайте уникальный индекс в этом столбце и укажите ему нужное имя. – Barmar

+0

Нет, вы не можете ограничить свой первичный ключ другим именем, чем 'PRIMARY' в MySQL. –

ответ

0

С функциональной точки зрения (насколько MySQL обеспокоен), ключ PRIMARY просто UNIQUE NOT NULLограничение *.

Поэтому вы можете заменить PRIMAY KEY на индекс UNIQUE NOT NULL, который вы можете назвать так, как считаете нужным.

Если PRIMARY KEY также требуется вашим приложением (или если идея таблицы без первичного ключа заставляет вас болеть), вы можете сохранить обе клавиши на столе, что удваивает соответствующие накладные расходы, как с точки зрения ЦП времени и пространства для хранения (так что это плохая идея).

В MySQL нет такой вещи, как псевдоним индекса.


*Если вы не определите PRIMARY KEY для вашей таблицы, MySQL находит первый UNIQUE индекс, в котором все ключевые столбцы NOT NULL и InnoDB использует его в качестве кластерного индекса (reference).

+0

Я уверен, что можно легко настроить или изменить ваше приложение, чтобы оно могло иметь дело с первичным ключом (который можно было бы рассматривать как наиболее фундаментальную особенность РСУБД). Вы можете поделиться этой проблемой с нами, там * должно быть лучшим решением. – RandomSeed

+0

Итак, в принципе, я мог бы сначала добавить индекс «UNIQUE NOT NULL», а затем удалить первичный индекс. Поскольку теперь у меня есть индекс «UNIQUE NOT NULL», он должен позволить мне удалить основной индекс. Вид нового для MySql, поэтому просто убедившись, что я понимаю. Благодарю. – user3329922

+0

Первичный ключ никогда не требуется, поэтому вы можете его сбросить даже без ключа UNIQUE. (примечание: таблица без первичного ключа считается плохой практикой, но мы делаем преднамеренный выбор, чтобы заменить ее эквивалентным ограничением, чтобы обойти внешнюю проблему) – RandomSeed

Смежные вопросы