JavaDB: возможно ли изменить смещение автоинкремента в существующей таблице?
Можно ли изменить смещение автоинкремента в уже существующей таблице с помощью JavaDB?
У меня проблема, когда вставка новых записей обычно (но не всегда) завершается с ошибкой с жалобой на использование существующего ключа (мой столбец автоинкремента). Чтобы заполнить эту базу данных, я взял дамп из другой базы данных (MySQL) и использовал хранимую процедуру JavaDB, чтобы вставить их все в соответствующую таблицу JavaDB. Моя теория заключается в том, что вставка этих записей скопировала существующие идентификаторы из таблицы MySQL. Теперь функция автоинкремента отключает существующие идентификаторы. Я полагаю, что установка смещения на некоторое большое число позволит автоинкременту снова работать.
2 ответа
Я не знаю, как напрямую изменить смещение, но мне удалось это исправить:
- Изменение суммы приращения на X (1 миллион в моем случае).
- Вставка фиктивной записи.
- Уменьшение суммы приращения обратно до 1.
- Удаление фиктивной записи.
Я использовал этот оператор SQL для изменения суммы приращения:
ALTER TABLE tbl ALTER COLUMN col SET INCREMENT BY x
Даже если это не прямой ответ на вопрос: с MySQL вы можете сделать
ALTER TABLE my_little_table AUTO_INCREMENT =2000
установить значение автоинкремента.