我的问题是这样的,我有一个原料名表,需要复制到一个新的库里,我用Insert into 方式发现,它会改变ID号(自由编号的唯一标识),原因是:老表中有部分原料被删除了。造成的结果是:其它数据调用原料表时发生对应错误,即原本是该原料的,结果变成了另一个原料。
请问要如何复制完全一样的表?包括id的编号,并且id仍然是自动编号的唯一标识。
我之前是用这样的方式写的:select * Insert into b from a
这样写就会引起我说的ID编号不一致的问题。
有没有好的办法?
------解决思路----------------------
我按你的操作实践了下
create table test
(id int identity ,
pname varchar(10)
)
insert into test
select 'aa' union
select 'bb' union
select 'cc' union
select 'dd' union
select 'ee'
select * from test
--结果
五条记录,ID连续
delete from test where id =2 or id=4
select * into new from test
select * from new
/*
1 aa
3 cc
5 ee
*/
原来的id还是test中的id啊,没变啊
------解决思路----------------------
--创建b,表结构一样
create table [b]
(id int identity ,
--其它列
)
--临时取消自增
SET IDENTITY_INSERT b ON
INSERT INTO b(id,--其它列,需要一一写出来
)
SELECT * FROM a
--恢复取消自增
SET IDENTITY_INSERT b OFF