菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
180
0

在Sql Server 数据库中对自增列的插入时,提示:当 IDENTITY_INSERT 设置为 OFF 时,不能为表 't_xxx' 中的标识列插入显式值。

原创
05/13 14:22
阅读数 21471

 

解决方法如下:

sql server 批量插入记录时,对有标识列的字段要设置 set IDENTITY_INSERT 表名 on,然后再执行插入记录操作;插入完毕后恢复为 off 设置

格式:
  set IDENTITY_INSERT 表名 on
  插入数据的语句....
  set IDENTITY_INSERT 表名 off

 

举例:

set IDENTITY_INSERT peoplePworkpositiontype  on
insert peoplePworkpositiontype(id,workpositiontype,workpositiontypeid) values(1 , '平台' , 1 ) 
insert peoplePworkpositiontype(id,workpositiontype,workpositiontypeid) values(2 , '陆地' , 2 ) 
insert peoplePworkpositiontype(id,workpositiontype,workpositiontypeid) values(3 , '海上' , 3 )

go
set IDENTITY_INSERT peoplePworkpositiontype  off


set IDENTITY_INSERT peoplePstatetype  on
insert peoplePstatetype(id,nowstatetype,nowstatetypeid) values(1 , '出海' , 1 ) 
insert peoplePstatetype(id,nowstatetype,nowstatetypeid) values(2 , '出差' , 2 ) 
insert peoplePstatetype(id,nowstatetype,nowstatetypeid) values(3 , '公司' , 3 ) 
insert peoplePstatetype(id,nowstatetype,nowstatetypeid) values(4 , '会议' , 4 ) 
go
set IDENTITY_INSERT peoplePstatetype  off
go

 

出处:https://www.cnblogs.com/accumulater/p/6148637.html

=====================================================================================================

把IDENTITY_INSERT 设置为 ON ,还是不能插入数据问题

而我的使用的时候比较奇怪,明明已经设置了,如下:

我是想把备份表中的数据还原到现有表中
set IDENTITY_INSERT dbo.t_scs on
insert into dbo.t_scs select * from dbo.t_scs_0304;
set IDENTITY_INSERT dbo.t_scs off

但还是提示错误如下:
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'dbo.t_scs'中的标识列指定显式值。
 

解决方法:

当设置 IDENTITY_INSERT 为 ON 时 , 必须把需要插入的列名列出来, 不然报错

正确例子:

SET IDENTITY_INSERT  (表名) ON
insert into table(id,name) value(1,名称)

SET IDENTITY_INSERT (表名) OFF

解决方法:

当设置 IDENTITY_INSERT 为 ON 时 , 必须把需要插入的列名列出来, 不然报错

正确例子:

SET IDENTITY_INSERT  (表名) ON
insert into table(id,name) value(1,名称)

SET IDENTITY_INSERT (表名) OFF

 

我的改为如下可以正常执行:
set IDENTITY_INSERT dbo.t_scs on
insert into dbo.t_scs (id,scs_Name,scs_DateTime) select * from dbo.t_scs_0304;
set IDENTITY_INSERT dbo.t_scs off

 

出处:https://www.cnblogs.com/personal-blog/p/8472958.html

发表评论

0/200
180 点赞
0 评论
收藏
为你推荐 换一批