У меня есть таблица xxx с идентификатором (id_xxx int AUTO_INCREMENT) и именем (name_xxx varchar (50)),
Когда я вставляю новую строку в таблицу, я сделал:
INSERT INTO xxx VALUES ("name for test");
и результат (int = 1) вставки возвращается, затем я отображаю в своем интерфейсе Java сообщение «succseed!», До сих пор это очень простая и простая операция ...
НО,
когда я хочу вернуть вставленный id_xxx, я должен сделать еще один запрос к базе данных:
INSERT INTO xxx VALUES ("name for test");
//after the insert response I made:
SELECT MAX (id_xxx) FROM xxx;
и я отображаю в своем интерфейсе Java "succseed $$$ is your id_xxx" ....
вторая версия может легко вызвать серьезную ошибку при одновременном доступе нескольких пользователей:
представьте себе случай, когда user1 делает вставку ... и затем операции прерывания H2DB этого пользователя затем выполняют вставку user2.
когда user1 выполняет select max (id_xxx), H2DB возвращает A FALSE id_xxx ...
(Я надеюсь, что мой пример понятен, иначе я схематизирую эту проблему).
как решить эту проблему?