Как сбросить первичный ключ?Я получаю неверное определение таблицы - PullRequest
1 голос
/ 12 октября 2010

Я пытаюсь выполнить этот запрос:

ALTER TABLE table DROP PRIMARY KEY, ADD PRIMARY KEY( `CUSTNO` , `DEPTNO` , `PRODNO` , `DT` );

Я получаю

Incorrect table definition; there can be only one auto column and it must be defined as a key

Ответы [ 3 ]

4 голосов
/ 12 октября 2010

Вы должны изменить свой столбец pk, чтобы в нем больше не было модификатора auto_increment.

1 голос
/ 12 октября 2010

вам нужно будет сделать это за 3 (или 4) шага:

  1. удалить атрибут "auto-incremet" из вашего текущего первичного ключа
  2. удалить ваш первичный ключ
  3. установить новый первичный ключ
  4. (сбросить "auto_incremet" на ваш столбец первичного ключа orl)

РЕДАКТИРОВАТЬ: возможно настройкановый предмет не то, что вы действительно хотите сделать.пожалуйста, взгляните на уникальные индексы - я думаю, это то, что вы хотите установить в других столбцах, чтобы они не встречались более одного раза.

0 голосов
/ 12 октября 2010

Прежде всего, если я прав, вы определяете составной ключ? Это обычно плохая практика. Лучше иметь дополнительный столбец ID и добавить отдельное ограничение, чтобы проверить, есть ли у вас уникальная комбинация. И, как предложил codymanix, сначала нужно изменить столбец, чтобы он больше не содержал auto_increment, а затем отбросить его.

...