我正在尝试为最初在DB2中使用以下内容完成的表生成唯一的id:
insert into database.table
select next value for database.sequence,
current_timestamp,
from source
序列具有定义的起始值(例如25430)。
我目前使用的代码是:
insert into database.table
select
row_number() over() + select max(id) from table,
from_unixtime(unix_timestamp())
from source;
除了嵌套的select语句不起作用之外没什么用,我必须运行
select max(id) from table
并手动将其放入查询中。
有人可以在一个查询中建议一种方法吗?
答案 0 :(得分:0)
你必须强制交叉连接,如下所示:
select
...
from source,
(select max(id)as maxid from table) as m_id
;
通过这种方式,您可以获得一个最大ID值,然后您可以使用它来生成新值。
用蜂巢生成代理键有点痛苦,令人遗憾。