如何使用 Datagrip 插入带有标识列的行?

Posted

技术标签:

【中文标题】如何使用 Datagrip 插入带有标识列的行?【英文标题】:How do I insert a row with an identity column with Datagrip? 【发布时间】:2016-07-20 17:53:20 【问题描述】:

在尝试使用 Datagrip 时,我遇到了一个主要障碍。

我有一个带有主键“Id”字段的 Sql Azure 表,该表作为 Identity(1,1) 发送。在 Datagrip 中,它将列显示为 Id INT (auto increment)

我点击表格并打开表格编辑器。然后我添加了一条新记录,但将 Id 列留空。但是,当我提交更改时,它说它无法为标识列插入显式值。

不能在 Datagrip 中添加带有标识列的新记录吗?

【问题讨论】:

【参考方案1】:

看起来issue 是几年前修复的。

【讨论】:

【参考方案2】:

如果要添加带有标识列的记录,则需要为特定表打开IDENTITY_INSERT

https://msdn.microsoft.com/en-AU/library/ms188059.aspx

SET IDENTITY_INSERT tblYourTable ON
INSERT INTO tblYourTable (ID, Name...) VALUES (1, 'Foo', ...)
SET IDENTITY_INSERT tblYourTable OFF

值得注意的是,这不是您应该保留的内容,因为您希望仅对少数记录执行此操作。例如,导入以前的数据。

【讨论】:

这不仅根本不使用 Datagrip 工具,而且如果我尝试将数据插入生产数据库,它非常容易出错并且可能导致异常。此外,如果我正在执行插入操作手动声明我还不如只留下ID列而不处理identity_insert。

以上是关于如何使用 Datagrip 插入带有标识列的行?的主要内容,如果未能解决你的问题,请参考以下文章

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

Java:如何使用用于 Sql Server 的 java jdbc 执行带有标识列的批量插入

获取插入到雪花数据仓库中的行的标识

phpMyAdmin:如何插入具有受限列的行?

插入带有标识列的多个字段不起作用

带有标识列的 EF Code First 父子插入 (HELP)