mysql, alter column удалить первичный ключ и автоинкремент - PullRequest
24 голосов
/ 22 июня 2010

Я меняю свою таблицу mysql db с идентификатора (auto) на uid.

ALTER TABLE companies DROP PRIMARY KEY;
ALTER TABLE companies ADD PRIMARY KEY (`uuid`);

Это ошибка, которую я получаю ..

[SQL] ALTER TABLE companies DROP PRIMARY KEY;
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Что я понимаю, мне нужно изменить идентификатор на не-автоинкремент, потому что я отбрасываю его как первичный ключ.? Каков синтаксис для изменения столбца для удаления первичного ключа и автоматического приращения?

ALTER TABLE companies change id id ?????????? int(11)

Ответы [ 3 ]

31 голосов
/ 22 июня 2010

Если вам нужно удалить автоинкремент и первичный ключ из столбца id в одном операторе SQL, это должно сделать:

ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11);

Фактически, вы должны быть в состоянии сделатьвсе в одном ALTER TABLE запросе:

ALTER TABLE companies
DROP PRIMARY KEY,
CHANGE id id int(11),
ADD PRIMARY KEY (uuid);
4 голосов
/ 07 марта 2014

Если вы не меняете имя столбца, вы можете использовать MODIFY:

ALTER TABLE `companies` MODIFY `id` int(11), 
                           DROP PRIMARY KEY, 
                   ADD PRIMARY KEY (`uuid`);

Делая все это в одном операторе alter, он также рассматривается как атомарный, поэтому нет вероятности несоответствия между запросами (в отличие от выполнения нескольких операторов в строке).

3 голосов
/ 07 февраля 2014

Запрос на удаление автоинкремента:

alter table companies DROP PRIMARY KEY,
change id id int(11) NOT NULL

Теперь вы можете видеть структуру таблицы без автоматического приращения.

Если вы хотите добавить первичный ключ в другой столбец, используйте этот запрос

alter table companies add PRIMARY KEY(uuid)

Если вы хотите удалить автоинкремент, первичный ключ и добавить первичный ключ в новый столбец в том же запросе, используйте этот запрос

alter table comapnies DROP PRIMARY KEY,
   change id id int(11) NOT NULL,
   add PRIMARY KEY(uuid)
...