首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL2008如何做一个回收站的功能

2013-01-05 
【求助】SQL2008怎么做一个回收站的功能T_ClassCourse表中F_ClassId中通过他在T_class表中的F_ID(即GUID)联

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


T_ClassCourse表中F_ClassId中通过他在T_class表中的F_ID(即GUID)联系的Course
SQL2008如何做一个回收站的功能
[解决办法]
写个触发器咯  在一个数据表上写个触发器   当删除的时候把删除的数据插入到备份表中
[解决办法]
回收站?
把每个表都建一个回收表,删除时在主表删除,并添加到回收表中.
我的做法是将整个数据库里重要的操作提取出一些共同的列,删除时归并到这个表中,去除不重要的细节.
[解决办法]
可以建立一個回收表.

--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的數據.
[解决办法]
在表中多加一列:isdelete,当0时为不删除,1时为逻辑删除,当第一次放到回收站时,改成1.平时查询的时候也加上个where isdelete的条件。当在回收站删除时,才彻底删除这条数据。

热点排行