INSERT SQL и получать идентификацию (JEE)

Как он говорит титул, это в java EE, особенно java Веб. Однако, это консультация SQL простая:

У меня есть таблица с несколькими данными, и одним id автоувеличительный:

пойдите, датируй, текст.

Я использую servlet, чтобы добавлять элемент к базе данных со следующей консультацией:

INSERT INTO tabla (fecha, texto) VALUES (valor1, valor2)

Однако, я хочу получить ID что произвелся. Каков работоспособный способ это делать?

Мне случается производить другую консультацию, которая получает последний совокупный элемент, однако, мне кажется неэффективным производить другую консультацию. Кроме того, если присоединяются 2 элемента со счетов, отличных от похожих времен, коды могли бы пересекаться... Какая-то идея? Они знают, возможно получать ли с той же консультации?

0
задан 15.09.2016, 16:43
2 ответа

То, что ты хочешь, ты можешь получать это используя функцию MySQL LAST_INSERT_ID, этот возврати последнего идентификатора, введенного в базе данных.
Идентификатор ты можешь получать это добавляя следующую консультацию к настоящей:

SELECT LAST_INSERT_ID();

Оставаясь следующей формы:

INSERT INTO tabla (fecha, texto) VALUES (valor1, valor2); SELECT LAST_INSERT_ID();

Таким образом, то, что ты получаешь, состоит в том, чтобы работали одновременной формы обе консультации, и как результат Вашего выполнения возвращал тебе последний dentificador, введенный в базе данных, в этом случае, который был введен используя решение INSERT.

Ты можешь получать больше информации относительно этой функции консультируя следующую страницу документации MySQL

3
ответ дан 24.11.2019, 13:23

Мне случается производить другую консультацию, которая получает последний совокупный элемент, однако, мне кажется неэффективным производить другую консультацию.

Я не понимаю почему неэффективно, все время делают ли системы консультации. Кроме того, такая консультация как это взятие действительно poquísimo время.

SELECT id FROM Tabla ORDER BY id DESC LIMIT 1

Другой выбор состоит в том, чтобы создавать хранившуюся процедуру, которая сохранялась бы и возвратил введенные включенные реестры автопроизведенный id.

В конце концов, и самая легкая альтернатива состоит в том, чтобы использовать JPA:

em.persist(producto);
em.flush();
return producto.getId();

В JPA, когда ты реализуешь flush, сохраненная организация обновляет Ваши свойства, между ними, ID автопроизведенный, а следовательно ты можешь использовать getter только получать для это.

0
ответ дан 24.11.2019, 13:23