2016-09-30 5 views
0

Я хочу получить идентификатор строки или идентификатор записи для последней вставленной записи в таблице в Trafodion.Получить последний вставленный идентификатор строки в trafodion

Пример:

1 | John <br/> 
2 | Michael 

При выполнении оператора INSERT, я хочу, чтобы вернуть созданный идентификатор средства 3.

Может кто-нибудь сказать мне, как сделать это с помощью trafodion или это не возможно?

ответ

0

Вы используете генератор последовательности для генерации уникальных идентификаторов для этой таблицы? Что-то вроде этого:

create table idcol (a largeint generated always as identity not null, 
        b int, 
        primary key(a desc)); 

В любом случае, с или без генератора последовательности, вы можете получить высокий ключ с этим утверждением:

select max(a) from idcol; 

Проблема заключается в том, что это утверждение может быть очень неэффективным. Trafodion имеет встроенную оптимизацию для чтения min ключевого столбца, но не использует ту же оптимизацию для максимального значения, потому что HBase до недавнего времени не имел обратного сканирования. Мы должны использовать обратное сканирование, пожалуйста, напишите JIRA. Чтобы сделать это более эффективным с текущим кодом, я добавил DESC в объявление первичного ключа. С ключом нисходящим, получая максимальный ключ будет очень быстро:

explain select max(a) from idcol; 

Однако, имея данные растут с более высоких на более низкие значения могут вызвать проблемы в HBase, я не уверен, является ли это проблема или нет ,

Вот еще одно решение: Используйте функцию Trafodion, что позволяет выбрать вставленные данные, показывая введенные значения сразу:

select * from (insert into idcol(b) values (11),(12),(13)) t(a,b); 

A      B   
-------------------- ----------- 

        1   11 
        2   12 
        3   13 

--- 3 row(s) selected. 
+0

Спасибо за ваш ответ. В описании таблицы я использую «largeint, сгенерированный всегда как идентификатор, а не нуль». Я не хочу запускать новый запрос, который выбирает запрос max() после вставки. Мне нужно последнее rowId при вставке строки. После вставки он должен возвращать строку №. в том же запросе. как в mysql есть KeyHolder keyHolder = new GeneratedKeyHolder(); , который содержит недавно вставленный rowId. Возможно ли это в Trafodion? – ankit

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