先把购买资料中的会员表members和会员发布的产品表products数据都导入到本地数据库的两个临时表#members和#products,#members不保留自增属性--将临时表#members中的MembersID转为本地MembersID,在原ID基础上加上本地最大的MembersID编号
update #members  set MembersID = MembersID+(SELECT MAX(ID) FROM members  /*本地的会员数据表*/ )--同上
update #products set MembersID = MembersID+(SELECT MAX(ID) FROM members  /*本地的会员数据表*/ )--将临时表数据导入本地表
SET IDENTITY_INSERT ON
GOinsert into members  /*本地的会员数据表*/ 
select * from #membersinsert into products /*本地的产品信息表*/
select * from #products
GOSET IDENTITY_INSERT OFF
GO--修改本地members表的自增种子为当前表最大ID号+1
declare @MembersID INT,@var varchar(8000)
select @MembersID = max(MembersID)+1 from members  /*本地的会员数据表*/ 
set @var = 'DBCC CHECKIDENT (members, RESEED, '+cast(@MembersID varchar(20))+')'
exec(@var)

解决方案 »

  1.   

    看来我说的不够清,我再举个例子吧
    例如:购买会员表members,购买产品表products
    member_id都是自动递增的
    members有数据
    member_id   field1 ...
    5            张三  ...products有数据
    product_id  member_id  field1  ...
    1             5          null
    2             5          null
    3             5          null
    (备注:说明张三发布了3条产品)我们自己的会员表my_members,产品表my_productsmy_members有数据
    member_id   field1 ...
    5            李四  ...my_products有数据
    product_id  member_id  field1  ...
    1             5          null
    (备注:说明李四发布了1条产品)
    *************************************************
    我如果导过来后就变成了
    my_members就变成
    member_id   field1 ...
    5            李四  ...
    6            张三  ...
    my_products就变成
    product_id  member_id  field1  ...
    1             5          null
    2             5          null
    3             5          null
    4             5          null这样岂不是都变成了李四发的产品了
    我想正确的结果
    my_products
    product_id  member_id  field1  ...
    1             5          null
    2             6          null
    3             6          null
    4             6          null====================================================
    不知道是否明白我的意思
      

  2.   

    这么快啊,我还以为我是二楼呢!教你一个最简单的方法!(自增的是单纯的数字)把你买的表members.member_id  和products.member_id 都加上你自己表中的最大的member_id
    如:你的表中member_id 最大为1000,那么把买的表中的member_id 通过update都加上1000后,再反插过来到你有表中就OK了!
       SQL:
         update members set member_id =member_id + (select max(member_id) from my_members)
         update products set member_id =member_id + (select max(member_id) from my_members)   insert into my_members select * from members
       inset into my_products select * from products
      

  3.   

    感谢两位高人:
     libin_ftsafe(子陌红尘)
     hglhyy(查無此人)你们的两个思路差不多,应该可以解决我的问题了,非常感谢,但暂不结贴,
    明天我彻底解决就结,我怕还有问题
      

  4.   

    /*
    处理思想:导入的数据按照负数存放。不影响原来的id自增。
            如果外部表仍然需要数据增长,修改其自增为(-1,-1),并将所有相关的id都update为-1
    这样两个id永远不会重复。
    myTableName:你自己的表
    otherTableName:外面的表
    */
    set identity_insert myTableName on
    insert into myTableName(id,...)
    select -id,...
    from otherTableName
    set identity_insert myTableName offupdate otherTableName_products
    set id=-id--otherTableName对应的id