2014-12-26 2 views
0

У меня есть таблица request_t, содержащая столбец reg_number, и этот столбец содержит значения. может ли кто-нибудь помочь, как восстановить последнее вставленное значение столбца? (Моя База данных DB2)Как я могу получить последнее вставленное значение из столбца таблицы в DB2?

+0

Я предлагаю вам использовать автоинкрементный технический идентификатор и использовать макс-функцию над всеми записями, чтобы получить последнюю вставленную запись , –

+0

Как вы определяете _last_? – mustaccio

+0

@ mirco.widmer - Мне не нравится использование auto-increment ids таким образом, поскольку я считаю их немного больше, чем адреса памяти. Это, и не всегда безопасно использовать только «MAX()» в параллельной среде. @Venugopal - есть 'NEW_TABLE', что означает, что вы можете получить только что вставленные строки (в том же самом заявлении). В противном случае вы обычно хотите, чтобы временная метка могла получить последнюю хронологическую запись. –

ответ

0

Вы можете использовать функцию ROW_NUMBER() следующего

SELECT ID, NAME, ROW_NUMBER() OVER() AS ROWNUM FROM YOUR_SCHEMA.YOUR_TABLE 
ORDER BY ROWNUM DESC FETCH FIRST 1 ROW ONLY; 
+0

False. Без 'ORDER BY', это даст вам любую строку, с которой db может вернуться быстрее всего. Это будет зависеть от того, что нагрузка, какие у вас индексы ... –

+0

@ Clockwork-Muse - я добавил «ORDER BY ROWNUM». Хотя я согласен с тем, что он может вернуть то, что БД может вернуть быстрее, исходя из множества факторов. Я думал, что самая последняя запись будет самой последней, и я предоставил это решение. Спасибо, что исправил меня. – Shrinath

+0

Нет, без 'ORDER BY' _inside_' OVER', результаты 'ROW_NUMBER()' ** сами ** являются случайными. Если вы не укажете порядок над соответствующими базовыми столбцами, невозможно определить, что вы собираетесь получить, особенно потому, что dbs часто используют параллельный ввод-вывод. (В этом конкретном случае у вас есть несколько более высокий шанс получить правильные результаты, так как вы, вероятно, заставите полное сканирование таблицы из-за того, как вы попросили результаты. В зависимости от некоторых других вещей это может заблокировать таблицу для в то время как, и будет потреблять больше ресурсов, чем необходимо.) –

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