【问题标题】:Cannot insert explicit value for identity column无法为标识列插入显式值
【发布时间】:2015-10-27 05:14:36
【问题描述】:

我正在将我的应用程序从一个数据库迁移到另一个数据库,同时保持表结构不变。我在新表中创建相同的表并使用 db 链接插入值。 我收到错误消息,例如“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'XYZ' 中插入标识列的显式值”。因为表 XYZ 有 ScreenConfigSettingAccessId 作为标识列

下面是我用来创建表格和插入值的脚本

     CREATE TABLE [dbo].[XYZ](
[ScreenConfigSettingAccessId] [int] IDENTITY(1,1) NOT NULL,
[APP_ID] [int] NOT NULL,
[ScreenConfigSettingId] [int] NOT NULL,
[RSRC_ID] [char](20) NOT NULL)
)


INSERT INTO [dbo].[XYX]
       (
[ScreenConfigSettingAccessId] ,
[APP_ID] ,
[ScreenConfigSettingId] ,
[RSRC_ID] 
)
SELECT 
[ScreenConfigSettingAccessId] ,
[APP_ID] ,
[ScreenConfigSettingId] ,
[RSRC_ID] 
FROM [olddatabase].[database name].[dbo].[XYX]

在旧表中,ScreenConfigSettingAccessId 的值为 3 和 4。

我想插入旧表的相同数据,因此将 IDENTITY_INSERT 设置为 ON 并尝试但仍然不允许插入。

寻找你的建议

【问题讨论】:

  • 如果您在插入之前添加 SET IDENTITY_INSERT dbo.XYZ ON 似乎应该可以工作。当您尝试使用IDENTITY_INSERT 插入时,错误说明了什么?
  • 在 'SET IDENTITY_INSERT dbo.XYZ ON' 之后能够插入数据:-)
  • 插入后我需要'SET IDENTITY_INSERT dbo.XYZ OFF'吗?
  • 关闭后对我来说一切都很好。谢谢@ander2ed 的帮助
  • 是的,没错。很高兴能提供帮助。

标签: sql-server data-migration identity-column


【解决方案1】:

您需要指定表格。查看 SQL 联机丛书中的命令语法:SQL 2000SQL 2012(语法未更改)。

【讨论】:

    猜你喜欢
    • 2016-04-13
    • 2015-07-02
    • 2019-05-28
    • 1970-01-01
    • 2017-03-05
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多