我试图将值0插入到具有现有数据的表的列中。 标识列是(1,1)。我是否需要删除现有数据才能插入值0?
SET IDENTITY_INSERT table ON
INSERT INTO table (id,...) Values(0,.....)
SET IDENTITY_INSERT table OFF
我试图运行它,但脚本只是挂起。
答案 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 |
+----+------+