AWS Redshift标识列插入-新记录的标识值不大于以前的最大标识值

时间:2019-01-31 18:26:12

标签: sql amazon-redshift identity

这是我关于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);

1 个答案:

答案 0 :(得分:0)

来自Redshift的文档:

为确保标识值唯一,Amazon Redshift在创建标识值时会跳过许多值。标识值是唯一的,但是顺序可能与源文件中的顺序不匹配。

来源:https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html