JavaDB: возможно ли изменить смещение автоинкремента в существующей таблице?

Можно ли изменить смещение автоинкремента в уже существующей таблице с помощью JavaDB?

У меня возникла проблема, когда вставка новых записей обычно (но не всегда) завершается сбоем с ошибкой, жалующейся на использование существующего ключа (мой столбец автоинкремента). Чтобы заполнить эту базу данных, я взял дамп из другой базы данных (MySQL) и использовал хранимую процедуру JavaDB, чтобы вставить их все в соответствующую таблицу JavaDB. Моя теория заключается в том, что вставка этих записей скопировала существующие идентификаторы из таблицы MySQL. Теперь функция автоинкремента выдает существующие идентификаторы. Я полагаю, что явное задание смещения на какое-то большое число позволит снова работать автоинкременту.


person Outlaw Programmer    schedule 09.12.2008    source источник


Ответы (2)


Даже если это не прямой ответ на вопрос: с MySQL вы можете сделать

ALTER TABLE my_little_table AUTO_INCREMENT =2000

для установки значения автоинкремента.

person cweiske    schedule 19.11.2010

Я не знаю, как напрямую изменить смещение, но мне удалось это исправить:

  1. Изменение суммы приращения на X (в моем случае 1 миллион).
  2. Вставка фиктивной записи.
  3. Уменьшение суммы приращения обратно до 1.
  4. Удаление фиктивной записи.

Я использовал этот оператор SQL, чтобы изменить величину приращения:

ALTER TABLE tbl ALTER COLUMN col SET INCREMENT BY x
person Outlaw Programmer    schedule 09.12.2008