Я пытаюсь изменить таблицу для создания ее столбца первичного ключа AUTO_INCREMENT
после факта. Я попробовал следующий SQL, но получил уведомление о синтаксической ошибке.
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
Я делаю что-то не так, или разве это не возможно?
+--------------------+ | VERSION() | +--------------------+ | 5.0.75-0ubuntu10.2 | +--------------------+
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment
. AUTO_INCREMENT
является частью типа данных столбца, нужно снова определить полный тип данных для столбца:
ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT
(int
, взятый в качестве примера, нужно установить тип столбца, который был до этого)
SQL это будет:
ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;
Есть пара причин, которые ваш SQL может не работать. Во-первых, вы должны повторно указать тип данных ( INT
в этом случае). Кроме того, столбец, которую вы пытаетесь изменить, должны быть проиндексированы (это не должно быть первичным ключом, но обычно это то, что вы хотели бы). Кроме того, может быть только один столбец auto_increment
для каждой таблицы. Таким образом, вы, возможно, хотите запустить следующий SQL (если ваш столбец не проиндексирован):
ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;
Вы можете найти больше информации в документации MySQL: http://dev.mysql.com/doc/refman/5.1 /en/Alter-table.html Для модифицирующего синтаксиса столбца и http://dev.mysql.com/doc/refman/5.1/en/create-table.html для получения дополнительной информации о Указание столбцов.
Перед директивой auto_increment
необходимо указать тип столбца, т.е. ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT
.
Роман прав, но обратите внимание, что колонка auto_increment должна быть частью PRIMARY KEY или UNIQUE KEY (и почти в 100% случаев она должна быть единственной колонкой, составляющей PRIMARY KEY):
ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY