在批量插入数据时,已经设置了IDENTITY_INSERT 为 ON ,却依旧提示“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXX'中的标识列指定显式值。”
实际上,在批量插入数据时,要注意以下两点:
①设置IDENTITY_INSERT为 ON
SET IDENTITY_INSERT PersonTB ON
GO
SET IDENTITY_INSERT PersonTB OFF
GO
② 批量插入时接收数据表要写出所有列,数据源表不做要求
insert into PersonTB_BAK(Id,Code,Name,Sex) select Id,Code,Name,Sex from PersonTB;
insert into PersonTB_BAK(Id,Code,Name,Sex) select * from PersonTB;
------------------------------------------------------------------------------------------------
综上:
SET IDENTITY_INSERT PersonTB ON
GO
-- 以下两种写法均可
insert into PersonTB_BAK(Id,Code,Name,Sex) select Id,Code,Name,Sex from PersonTB;
-- insert into PersonTB_BAK(Id,Code,Name,Sex) select * from PersonTB;
SET IDENTITY_INSERT PersonTB OFF
GO