2016-07-21 8 views

ответ

-1

Предполагая, что ваши идентификаторы автоинкрементные в порядке возрастания можно запросить для самого высокого идентификатора ...

SELECT id from table ORDER BY id DESC LIMIT 1 

, что должно дать вам самый высокий идентификатор, и если ваши идентификаторы автоинкрементным это должно быть последняя запись ...

+0

Это относится к условиям гонки и, как известно, ненадежно. –

+0

Я не знал о каких-либо условиях гонки или ненадежности по этому запросу ... Если это действительно так, то можно использовать SELECT MAX (id) из таблицы ... – Tim

+0

Что делать, если у вас несколько клиентских программ базы данных, вставляющих строки в таблицу ? Это гонка. 'MAX()' имеет ту же проблему. –

0

Многие программы Oracle используйте database objects called SEQUENCEs для генерации уникальных идентификаторов. Если вы знаете, какая последовательность используется для идентификатора в таблице вы просто INSERT ред в, просто сказать

SELECT sequencename.CURRVAL FROM DUAL; 

сразу после вставки, в то же соединение с базой данных, и вы получите номер документа.

SELECT MAX(id) и аналогичные конструкции работают нормально, если только вы только когда-либо имеете одно соединение с базой данных: это означает, что они не работают. В основном они не являются потокобезопасными. Они также дороже, чем CURRVAL.

Смежные вопросы