读书人

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

发布时间: 2013-01-05 15:20:40 作者: rapoo

【求助】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的条件。当在回收站删除时,才彻底删除这条数据。

读书人网 >SQL Server

热点推荐