2012-03-21 2 views
0

Я только начал изучать jdbc и делать с ним различные тесты.jdbc 4 connection rollback autoincrement issue

я наткнулся на следующую ситуации

  • набор
  • точка сохранение
  • создать подготовленное заявление и попытаться выполнить (добавляемые данные в таблицу с внешним ключом, который не существует
  • Выполнить() метод завершается неудачно, и я делаю откат.
  • Когда я делаю правильный запрос, строка вставляется в db, но первичный ключ устанавливается как n + 2 вместо n + 1 (где n - последнее вставленное значение). Угадайте автоинкремент индекса, даже если запрос не удался.

Есть ли механизм, чтобы избежать этого и установить n + 1?

Примечание. Я использую MySQL.

Спасибо.

+2

как насчет чтения http://stackoverflow.com/questions/449346/mysql-auto-increment-does-not-rollback topic? –

+0

Я согласен с этим сообщением, но я не хочу принимать во внимание это в своей логике приложений. Мне просто интересно, почему происходит это явление, и если есть способ преодолеть это. – Radu

+0

Это происходит потому, что генерация id не зависит от транзакции. Невозможно преодолеть это без особых усилий. Не указывайте значение id. – Hiro2k

ответ

0

Это поведение нормально для MySQL auto_increment. Ну, вы можете сделать магию, используя mysql_insert_id().