1:我想实现如下思路:
数据库DB中有十几个表,我想将表A,B中的数据保存备份(就这2个表).有个要求是,这2个表可以随时还原回去,这里的还原是指不删除后来添加的数据的基础上。而是叠加上去。
比如今天我备份了A,B表,然后删掉其数据,又继续添加新的数据进去,明天我将备份还原回来,但新的数据也在,就是AB表的数据加到新数据上。该如何实现。谢谢。具体思路或代码是怎么样的。2:我有2个表,是主从表,比如A是顾客信息(一条),B表是顾客购买的商品(多条).我可以用select * from A取得顾客的信息,但是我想在这后面加上一列,就是该顾客所购买的产品的备注,也就是从B表中取出所有该顾客的信息做为一个字符串。又该怎么做呢。
谢谢。分不够可以再加.只为解决问题。

解决方案 »

  1.   

    1,在还原的时候将表还原到一临时表,然后
    insert into a select * from ##a where 主键 not (in select 主键 from a)
    就是将主键不存在的记录添加进去.
    然后删除临时表2,
     create function getinfo(@custId varchar(20)) returns varchar(2000)
    as
      declare @info varchar(20)  --要提取的信息
      declare @rt varchar(2000)  --返回信息集合
      declare cur cursor for select info from 表b where custId =@custId
      open cur
      fetch next from cur into @info
        while @@fetch_status=0
          begin
               set @rt=@rt+isnull(@info,'')
               fetch next from cur into @info
          end
      close cur
      deallocate cur
      return isnull(@rt,'')
    select a.*,dbo.getinfo(a.curId) from 表A
      

  2.   

    --备份某个表为新表名select *
    into 新表名
    from 原表名
      

  3.   

    to1:表中的数据只能保存在表中,难不成你还想保存在库中?你可以将两个表中的数据保存在一个表中,当然你也可以把表中的数据再导出来,这都是可以的,然后想还原的时候再还原回去就可以了。
    to2:select A.*, B.顾客信息 from A, B on A.id = B.id
      

  4.   

    楼上的好象没理解我的意思哦是保存在2个表中,然后想只备份这2个表,而又可以根据备份文件随时还原回去,而不会将新数据弄没了。
    第二个我考虑过游标,但是单纯sql语句可以实现么。谢谢,明天结贴。
      

  5.   

    第二个要用到函数或存储过程才可以。单单sql语句是比较难的。
      

  6.   

    第一个简单说也比较简单,就是select * into 新表 from table就可以
    如果需要很多其他信息,就需要设计上注意,可能需要增加guid类型字段或时间字段(这个根据需要)
    第二个只能增加一个字定义函数来实现