这是我关于stackoverflow的第一篇文章!如果我无法正确遵循“提出问题”的政策,让我在这里亲眼道歉。
话虽如此,关于以下帖子,我遇到了一个问题,即AWS Redshift中的“身份”列,但问题却不同:
Identity Column not respected on Insert into() (Amazon Redshift)
问题(实施例提供下面的值是“只是示例”,来说明这个问题): “如果我有一个最大(identityColumn)= 100,对于有100条记录,为什么不新记录我插入后有identityColumn值大于100的表?”
预期结果: 如果我插入件5的新记录到新表,该identityColumn将有 “101”, “102”, “103” 的值, “104”, “105”
实际结果: 新记录的值为“ 52”,“ 57”,“ 62” ...
如果正确地明白从我上述粘贴后,标识列可能不总是按顺序或连续顺序...这是确定。然而,这个问题我面对的是,当我试图插入新记录,标识列不从最后一个“最大”的身份继续价值。
下面是所使用的种代码的小例子:
---实施例1 ---
-1。使用标识列创建新表
CREATE TABLE newTable_With_Identity
(
identityColumn bigint IDENTITY(1,1)
,column1
,column2
,column3
,column4
,column5
);
-2。将旧表中的数据插入新的身份表中
INSERT INTO newTable_With_Identity
(
column1
,column2
,column3
,column4
,column5
)
(Select * from oldtable order by column3 asc);
---实施例2 ---
(与上述相同,但将最后一个select语句更改为以下内容)
(Select * from oldtable order by column1, column2, column3 asc);
答案 0 :(得分:0)
来自Redshift的文档:
为确保标识值唯一,Amazon Redshift在创建标识值时会跳过许多值。标识值是唯一的,但是顺序可能与源文件中的顺序不匹配。
来源:https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html