1

将值插入数据库表时出现错误。

“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'ref_user' 中插入标识列的显式值。”

请帮帮我???

4

4 回答 4

3
SET IDENTITY_INSERT tblename on
于 2012-09-25T06:19:28.970 回答
3

您收到此错误的原因是您试图在表中插入自动增量字段用作主 ke。

在您的命令中,您可以在插入之后设置Identity_Insert Onand then 。Off就像是:

new SqlCommand("SET IDENTITY_INSERT ON;
               Insert into yourtable .....;
               SET IDENTITY_INSERT OFF;", yourConnection);
于 2012-09-25T06:20:02.467 回答
0

尝试

句法:

SET IDENTITY_INSERT [ database. [ owner. ] ] { table } { ON | OFF }

前任:

SET IDENTITY_INSERT dbo.your_table  ON;

编辑

请注意,当您在..上指定身份插入时,您必须在插入语句中明确指定列列表

示例

create table test_identity (id int identity , val int)



SET IDENTITY_INSERT dbo.test_identity  On;
insert into test_identity (id,val) select  1,2
SET IDENTITY_INSERT dbo.test_identity  OFF;
于 2012-09-25T06:17:52.007 回答
0

如果您不熟悉此错误,则更有可能您正在尝试为不应提供的列提供值。

假设你有一张桌子:

CREATE TABLE T (
    ID int IDENTITY(1,1) not null,
    Col1 varchar(10) not null
);

如果您尝试这样的插入:

INSERT INTO T(ID,Col1) values (1,'abc');

你会得到你发布的错误。通常,您真正想要做的是:

INSERT INTO T(Col1) values ('abc');

(并且可能在之后检索插入的值SELECT SCOPE_IDENTITY())。

但是对于你提出的问题你会这样做:

SET IDENTITY_INSERT T ON;
INSERT INTO T(ID,Col1) values (1,'abc');
SET IDENTITY_INSERT T OFF;

通常,您不应该关心为列分配了哪些值IDENTITY——它们是恰好具有紧凑的数字表示的神奇值。但是您应该将它们视为黑匣子。当您为数字分配含义时,往往会出现问题。

于 2012-09-25T06:19:50.303 回答