Redshift - 插入身份列

Posted

技术标签:

【中文标题】Redshift - 插入身份列【英文标题】:Redshift - inserting into identity column 【发布时间】:2021-03-11 16:52:51 【问题描述】:

我已经创建了一个如下所述的表格。

create table employee (
surrogate_key bigint IDENTITY(1,1), 
first_name varchar(200), 
last_name varchar(200), 
phone_number varchar(200), 
creditcard_number bigint
)

insert into employee values 
('gaurang', 'shah', '356-776-4456', '4716973408090483')

但是,下面的代码给出了错误。

错误

[Code: 500310, SQL State: 0A000]  [Amazon](500310) Invalid operation: cannot set an identity column to a value;

【问题讨论】:

【参考方案1】:

插入员工(名字、姓氏、电话号码、信用卡号码)

值('gaurang'、'shah'、'356-776-4456'、4716973408090483)

当表中存在标识列时,您必须指定列名

【讨论】:

【参考方案2】:

另一种选择是使用默认值定义代理键

surrogate_key bigint 默认生成为 IDENTITY(1,1),

然后运行这个查询

插入员工1

值(默认,'gaurang','shah','356-776-4456',4716973408090483)

【讨论】:

你可能应该把这个答案合二为一。

以上是关于Redshift - 插入身份列的主要内容,如果未能解决你的问题,请参考以下文章

在 Redshift 中插入列的子字符串

Redshift - 将文本列插入数据库表的问题

如何捕获插入到包含标识列的 Redshift 表中的行数?

插入数据:查看哪一列导致 Redshift 上的数字溢出

在 Insert into() 上不尊重身份列 (Amazon Redshift)

Redshift:使用来自另一个表的随机数据更新或插入列中的每一行