Вы можете просто дать своей строке идентификатор, который вам нравится. Например, с учетом следующего определения таблицы:
CREATE TABLE IF NOT EXISTS `stack-test` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(255),
PRIMARY KEY (`id`)
);
Следующий запрос вставит строку с автоматически сгенерированным идентификатором:
INSERT INTO `stack-test` (name) VALUES ('Peter');
И этот запрос вставит строку с пользовательским идентификатором:
INSERT INTO `stack-test` (id, name) VALUES (5, 'Joe');
Проверьте, запросив все строки:
SELECT * FROM `stack-test`;
Выход:
+----+-------+
| id | name |
+----+-------+
| 1 | peter |
| 5 | Joe |
+----+-------+
Обновление: просто прочитайте, что вы не хотите влиять на значение AUTO_INCREMENT
. Как уже упоминалось в staticsan, поле AUTO_INCREMENT
автоматически использует самое высокое значение плюс единицу. Есть оператор, который сбрасывает счетчик на определенное значение, но это работает, только если в таблице нет более высокого значения:
ALTER TABLE `stack-test` AUTO_INCREMENT = 2;