获取trafodion中最后插入的行ID

时间:2016-09-30 05:25:33

标签: hadoop hbase bigdata

我想获取Trafodion表格中最后插入记录的行ID或记录ID。

示例:

1 | John <br/>
2 | Michael

执行INSERT语句时,我想返回创建的ID,意思是3。

有人能告诉我如何使用trafodion这样做或者不可能吗?

1 个答案:

答案 0 :(得分:0)

您是否使用序列生成器为此表生成唯一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.