当前位置: 代码迷 >> Sql Server >> 一条SQL语句()
  详细解决方案

一条SQL语句()

热度:23   发布时间:2016-04-27 20:25:08.0
求助:一条SQL语句(在线等)
向一个表中导入另一个表中的数据,两个表差别:其中目的表要求自动编号。

SET   IDENTITY_INSERT   company1   ON
insert   into   company1
select   *   from   company
SET   IDENTITY_INSERT   company1   OFF
出现
服务器:   消息   8101,级别   16,状态   1,行   33
仅当使用了列的列表,并且   IDENTITY_INSERT   为   ON   时,才能在表   'company1 '   中为标识列指定显式值。


------解决方案--------------------
SET IDENTITY_INSERT company1 ON
insert into company1(显示指定列名)
select 显示指定列名 from company
SET IDENTITY_INSERT company1 OFF
------解决方案--------------------
SET IDENTITY_INSERT company1 ON
insert into company1(列1,列2,...)
select * from company
SET IDENTITY_INSERT company1 OFF

要显性调用列名
------解决方案--------------------
參考這個例子

Create Table company1
(ID Int Identity(1, 1),
Name Varchar(10))
Create Table company
(ID Int Identity(1, 1),
Name Varchar(10))
Insert company Select 'A '
Union All Select 'B '
GO
SET IDENTITY_INSERT company1 ON
insert into company1(ID, Name) select ID, Name from company
SET IDENTITY_INSERT company1 OFF

Select * From company1
GO
Drop Table company1, company
--Result
/*
ID Name
1 A
2 B

*/
------解决方案--------------------
需要显示指定列名
------解决方案--------------------
我以前也犯过这个错误,还是游泳的鱼告诉我的!呵呵
------解决方案--------------------
你的company1的自增列到底是否需要從company中導入值?

如果不需要,直接
insert into company1(公司名称,行业2,行业1,省份,城市,区号,电话1,分机1,联系人,职务,性别,整理日期)
select 公司名称,行业2,行业1,省份,城市,区号,电话1,分机1,联系人,职务,性别,整理日期 from company

如果需要

SET IDENTITY_INSERT company1 ON
insert into company1(自增列名,公司名称,行业2,行业1,省份,城市,区号,电话1,分机1,联系人,职务,性别,整理日期)
select 自增列名,公司名称,行业2,行业1,省份,城市,区号,电话1,分机1,联系人,职务,性别,整理日期 from company
SET IDENTITY_INSERT company1 OFF
  相关解决方案