0
我想獲取Trafodion中表中最後插入記錄的行ID或記錄ID。獲取trafodion中最後插入的行ID
例子:
1 | John <br/>
2 | Michael
當執行INSERT語句,我想回到創建的ID,意味着3
誰能告訴我該怎麼做,使用trafodion或者是不可能的?
我想獲取Trafodion中表中最後插入記錄的行ID或記錄ID。獲取trafodion中最後插入的行ID
例子:
1 | John <br/>
2 | Michael
當執行INSERT語句,我想回到創建的ID,意味着3
誰能告訴我該怎麼做,使用trafodion或者是不可能的?
您是否正在使用序列生成器爲此表生成唯一的ID?事情是這樣的:
create table idcol (a largeint generated always as identity not null,
b int,
primary key(a desc));
無論哪種方式,有或無序列發生器,你可以用這個說法得到最高的關鍵:
select max(a) from idcol;
的問題是,這種說法可能是非常低效的。 Trafodion有一個內置的優化來讀取關鍵列的最小值,但是它並沒有對最大值使用相同的優化,因爲直到最近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.
感謝您的答覆。我在表格描述中使用「生成的總是作爲身份不爲空」。我不想在插入後觸發選擇max()查詢的新查詢。插入行時,我需要最新的rowId。插入後應該返回行號。在相同的查詢中。像在mysql中有 KeyHolder keyHolder = new GeneratedKeyHolder(); 其中包含新插入的rowId。 Trafodion有可能嗎? – ankit