IDENTITY_INSERT 设置为 OFF?
Posted
技术标签:
【中文标题】IDENTITY_INSERT 设置为 OFF?【英文标题】:IDENTITY_INSERT is set to 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.
我该如何解决?
【问题讨论】:
-***.com/questions/1334012/…的可能重复 【参考方案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
【讨论】:
以上是关于IDENTITY_INSERT 设置为 OFF?的主要内容,如果未能解决你的问题,请参考以下文章
错误 IDENTITY_INSERT 设置为 OFF 但实际上它是 ON
无法插入显式值,因为 IDENTITY_INSERT 为 OFF,但无法将 IDENTITY_INSERT 设置为 ON,因为它已经为 ON
IDENTITY_INSERT 设置为 OFF - 如何将其打开?
[解决方案] 当 IDENTITY_INSERT 设置为 OFF 时