在标识列中插入值0

时间:2017-03-16 18:22:35

标签: sql sql-server

我试图将值0插入到具有现有数据的表的列中。 标识列是(1,1)。我是否需要删除现有数据才能插入值0?

SET IDENTITY_INSERT table ON
INSERT INTO table (id,...) Values(0,.....)
SET IDENTITY_INSERT table OFF

我试图运行它,但脚本只是挂起。

3 个答案:

答案 0 :(得分:1)

您可以使用

上的set identity_insert表来执行此操作
create table #test (id int identity(1,1), val int)

insert into #test (val) values (10),(11)

set identity_insert #test on

insert into #test (id, val) values (0,12)

set identity_insert #test off

但是如果您在id上有PK或唯一索引,那么您将获得约束错误

答案 1 :(得分:1)

create table #test (id int identity(0,1), val int)
SET IDENTITY_INSERT #test ON
INSERT INTO #test (id,val) Values(0,100)
SET IDENTITY_INSERT #test OFF
SELECT * FROM #test
id          val
----------- -----------
0           100

答案 2 :(得分:0)

使用identity_insert时,您必须指定插入的列名。

create table t (id int not null identity(1,1), col varchar(32));
set identity_insert dbo.t on;
insert into dbo.t (id,col) values(0,'test');
set identity_insert dbo.t off;

rextester演示:http://rextester.com/VMT42836

返回

+----+------+
| id | col  |
+----+------+
|  0 | test |
+----+------+