【问题标题】:IDENTITY_INSERT is set to OFF?IDENTITY_INSERT 设置为 OFF?
【发布时间】:2013-06-09 09:22:05
【问题描述】:

这是我的数据库脚本,

CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Code] [nvarchar](25) NULL,
[Name] [nvarchar](25) NULL,
[dob] [date] NULL ,
 CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED 
  (
[ID] ASC
  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,     
  ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
   ) ON [PRIMARY]

当我插入时,我得到了这个错误

Cannot insert explicit value for identity column in table 'MyTable' when   
IDENTITY_INSERT is set to OFF.

我该如何解决?

【问题讨论】:

标签: sql-server identity-column


【解决方案1】:

您正在尝试为标识列分配一个显式值,而不是在插入数据时让数据库为您创建一个。

你正在做类似的事情:

insert into MyTable (Id, Code, Name, dob) VALUES (1, 'XXX', 'xxx', 'xxx', somedate)

而不是

insert into MyTable(Code, Name, dob) VALUES ('xxx', 'xxx', somedate)

【讨论】:

    【解决方案2】:

    正如 Rafeel 所建议的,您不需要在 Identity 列中显式地显示 insert 值。但是,如果您删除了一行并且想要具有相同 ID 值的行。然后您可以执行以下操作:

    SET IDENTITY_INSERT MyTable ON
    
    insert into MyTable (Id, Code, Name, dob) 
    VALUES (OldIdValue, 'XXX', 'xxx', 'xxx', somedate)
    
    SET IDENTITY_INSERT MyTable OFF
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-27
      • 2015-10-18
      • 1970-01-01
      • 2011-10-02
      • 2018-05-27
      • 2012-04-24
      • 2010-10-01
      • 2011-03-07
      相关资源
      最近更新 更多