Дополнительно
Как создать последовательность в MySQL?
Я'пытаюсь создать последовательность в MySQL (я'очень новичок в SQL в целом). Я использую следующий код, но он вызывает ошибку:
CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;
ORDID ссылается на поле в таблице, которую я использую. Как мне правильно создать последовательность?
Редактировать:
Утверждается, что MySQL не использует последовательности. Сейчас я использую следующий код, но он тоже вызывает ошибки. Как мне их исправить?
CREATE TABLE ORD (
ORDID NUMERIC(4) NOT NULL AUTO_INCREMENT START WITH 622,
//Rest of table code
Редактировать:
Кажется, я нашел решение. Для phpMyAdmin (который я использовал) вы можете использовать следующий код.
ALTER TABLE ORD AUTO_INCREMENT = 622;
Я понятия не имею, почему он предпочитает это, но если кому-то еще нужна помощь с этим, то вот, пожалуйста. :)
21
3
Это решение предложено в руководстве MySQl:
Ознакомьтесь с этой статьей. Думаю, она поможет вам добиться желаемого. Если ваша таблица уже существует, и в ней уже есть данные, то ошибка, которую вы получаете, может быть вызвана тем, что auto_increment пытается присвоить значение, которое уже существует для других записей.
Короче говоря, как другие уже отметили в комментариях, последовательности, как они рассматриваются и обрабатываются в Oracle, не существуют в MySQL. Тем не менее, вы можете использовать auto_increment для достижения того, что вы хотите.
Без дополнительной информации о конкретной ошибке трудно предоставить более конкретную помощь.
UPDATE
Эта ссылка также полезна для описания использования auto_increment. Установка значения AUTO_INCREMENT, по-видимому, является опцией таблицы, а не чем-то, что указывается в качестве атрибута столбца.
Также, согласно одной из ссылок выше, вы можете альтернативно установить значение начала автоинкремента через изменение таблицы.
ОБНОВЛЕНИЕ 2 Вот ссылка на рабочий пример sqlfiddle, использующий автоинкремент.
Надеюсь, эта информация поможет.
При создании таблицы инкремента вы должны знать, что не следует удалять вставленные строки. Причина этого в том, чтобы избежать хранения больших тупых данных в базе данных с ID-ми в них. Иначе в случае перезапуска mysql он получит максимальный существующий ряд и продолжит инкремент с этой точки, как указано в документации http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html.