Mysql, alter column удалить первичный ключ и автоматическое приращение
Я меняю таблицу mysql db с id (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
Что я понимаю, мне нужно изменить id на не-автоинкремент, потому что я бросаю его как первичный ключ.? Каков синтаксис для изменения столбца для удаления первичного ключа и автоматического увеличения?
ALTER TABLE companies change id id ?????????? int(11)
Ответы
Ответ 1
Если вам нужно удалить автоинкремент и первичный ключ из столбца 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);
Ответ 2
Если вы не меняете имя столбца, вы можете использовать MODIFY
:
ALTER TABLE `companies` MODIFY `id` int(11),
DROP PRIMARY KEY,
ADD PRIMARY KEY (`uuid`);
Выполняя все это в одном выражении alter, он также рассматривается как атомарный, поэтому нет никаких шансов на несоответствие между запросами (в отличие от выполнения нескольких операторов в строке).
Ответ 3
Запрос на удаление автоматического приращения:
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)