【求助】SQL2008怎么做一个回收站的功能

365Marathon 2012-12-18 10:40:50
SQL2008怎么做一个回收站的功能,误删除再恢复的功能

比如,我错误的删除了某个班级,后来我又想恢复这个班级(或者重新添加进去,但是还是以前的GUID)

但是它的主键我用的是GUID,因为这个班和其他表的相关联的信息都是通过这个GUID联系起来的,怎么再把这个班级以前的GUID给找回来

T_Class表


T_ClassCourse表中F_ClassId中通过他在T_class表中的F_ID(即GUID)联系的Course
...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2012-12-18
  • 打赏
  • 举报
回复
在表中多加一列:isdelete,当0时为不删除,1时为逻辑删除,当第一次放到回收站时,改成1.平时查询的时候也加上个where isdelete的条件。当在回收站删除时,才彻底删除这条数据。
我腫了 2012-12-18
  • 打赏
  • 举报
回复
可以建立一個回收表.
--e.g.
If object_id('tbA')is null
    Begin
        Create table tbA (ID uniqueidentifier,value nvarchar(50))
        Insert into tbA Values(newid(),N'this is test!')
        Insert into tbA Values(newid(),N'this is test,too!')
    End

If object_id('tbA_ARV')is null
    Select *,Convert(datetime,null) As Date Into tbA_ARV From tbA Where 1=2

Delete
From tbA
Output Deleted.*,Getdate()
Into tbA_ARV

Insert into tbA(ID,value)
    Select ID,Value from tbA_ARV

Delete From tbA_ARV 
    Where ID in(Select ID from tbA)
    
把刪除的數據添加在tbA_ARV表,如果你需要恢復刪除的數據時,就可以從tbA_ARV表中抽取相關的數據并添加在tbA,然後在刪除已添加到tbA的數據.
-晴天 2012-12-18
  • 打赏
  • 举报
回复
回收站? 把每个表都建一个回收表,删除时在主表删除,并添加到回收表中. 我的做法是将整个数据库里重要的操作提取出一些共同的列,删除时归并到这个表中,去除不重要的细节.
  • 打赏
  • 举报
回复
写个触发器咯 在一个数据表上写个触发器 当删除的时候把删除的数据插入到备份表中
365Marathon 2012-12-18
  • 打赏
  • 举报
回复
估计我没说清楚,不过知道怎么做了,谢谢大家哦!!! 貌似建立回收表的方式可以哦,不过很麻烦诶,数据量大了库不就爆满了, 那样得先插入回收表,再删除主表,恢复的时候再插回主表,彻底清空的时候删除回收表 四楼高见,平时删除或者恢复只是更改isdelete字段,彻底删除回收站时在delete一下下

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧