insert into 表1 select * from 表2的问题
表t1,t2结构相同,其中第一个字段为id字段是标记字段,自动增加。
用insert into t2 select * from t1 从t1插入记录到t2会提示错误
“仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 't2 ' 中为标识列指定显式值。”
但是把语句改成 " insert into t2 select 除id字段外的各字段列表 from t1 "就可以执行但是这样的话就很不方便,我的t2表有上百个字段,那不能用*号的话岂不是要把这一百来个字段一个个写出来....
有没有解决办法呢?
------解决方案--------------------set IDENTITY_INSERT t2 ON
insert into t2 select * from t1
set IDENTITY_INSERT t2 OFF
------解决方案--------------------你的id字段是主关键字字段,系统要求主关键字不能有重复的,如果你用*的话当然就行不通了。你可以不把id字段定义为标识字段,这样就没有问题了。
------解决方案--------------------SET QUOTED_IDENTIFIER ON
GO
--
insert into t2 select * from t1
SET QUOTED_IDENTIFIER OFF
GO
------解决方案--------------------insert into t2 select * from t1
中有自动增长列~~~~在select * from t1 中把自动增长列提出(指定非自动增长列)就可以了!
------解决方案--------------------如果你的ID字段为主键的话那样插入肯定是不可以的,你可以这样试试
insert into t1 (字段1,字段2.....安段N)
select XXXXX from t2
注:(字段1,字段2.....安段N)中不包括ID安段,XXXXX为前面括号中内容一样的字段.