首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netezza和Netezza序列中的代理密钥

Netezza和Netezza序列中的代理密钥
EN

Stack Overflow用户
提问于 2016-05-09 19:17:19
回答 2查看 860关注 0票数 0

我正在从Oracle表中获取一些数据,并使用控制流中的SSIS 脚本任务插入到Netezza表中。

目标:在目标表中填充代理键(类似于着陆ID)字段。

目前,该查询看起来如下:

代码语言:javascript
复制
insert into destination_table
(
id, col1, col2, col3
)
select (SELECT NEXT VALUE FOR MY_SEQUENCER), field1, field2, field3
from source_table

我使用一个Netezza (MY_SEQUENCER)来生成一个唯一的数字,但是在查询提交之前,序列值不会增加。因此,在插入数据之后,我得到:

代码语言:javascript
复制
1, val1, val2, val3
1, val4, val5, val6
...

后续运行:

代码语言:javascript
复制
2, val1, val2, val3
2, val4, val5, val6
...

诸若此类。

有没有一种无需使用序列就能实现这一目标的方法?

非常感谢你的阅读和你可能提供的任何想法/提示/建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-09 19:46:50

我在这里看到了决议. In Netezza I'm trying to use a sequence in a case statement but the sequence value doesn't increment

代码语言:javascript
复制
insert into destination_table
(
id, col1, col2, col3
)
select (NEXT VALUE FOR MY_SEQUENCER), field1, field2, field3
from source_table
票数 0
EN

Stack Overflow用户

发布于 2016-05-26 03:40:36

删除括号和冗余select,它将为每一行生成一个新值。

代码语言:javascript
复制
TESTDB.ADMIN(ADMIN)=> select (select next value for mysequence), col1, col2 from test2 limit 5;
 ?COLUMN? | COL1 | COL2 
----------+------+------
        2 |    0 | 0
        2 |    2 | 2
        2 |    4 | 4
        2 |    6 | 6
        2 |    8 | 8
(5 rows)

TESTDB.ADMIN(ADMIN)=> select next value for mysequence, col1, col2 from test2 limit 5;
 NEXTVAL | COL1 | COL2 
---------+------+------
  200001 |    1 | 1
  200002 |    3 | 3
  200003 |    5 | 5
  200004 |    7 | 7
  200005 |    9 | 9
(5 rows)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37123730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档