我想获取Trafodion中表中最后插入的记录的行ID或记录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.

关于hadoop - 获取trafodion中最后插入的行ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39784249/

10-14 13:56