Sql server 2005 SQL Server“回收站”

Sql server 2005 SQL Server“回收站”,sql-server-2005,recycle-bin,Sql Server 2005,Recycle Bin,我正在建立一个内容管理网站,其中还将包括其他功能。当管理员成员通过管理面板删除一个项目时,我希望将该项目移动到“回收站”30天,然后自动删除 实现此功能的最佳方式是什么 我的一个想法是在表中有一个“Deleted”位列,然后只显示Hide=0的记录。然而,这意味着每次我从表中选择时都必须记住将此条件设置到位 我的另一个想法是创建第二个表,记录在删除时将移动到该表中。但是,我的网站中使用了许多表,因此这意味着表的数量将增加一倍,并且具有重复的表结构,这可能会在将来导致一致性问题 理想情况下,我希望

我正在建立一个内容管理网站,其中还将包括其他功能。当管理员成员通过管理面板删除一个项目时,我希望将该项目移动到“回收站”30天,然后自动删除

实现此功能的最佳方式是什么

我的一个想法是在表中有一个“Deleted”位列,然后只显示Hide=0的记录。然而,这意味着每次我从表中选择时都必须记住将此条件设置到位

我的另一个想法是创建第二个表,记录在删除时将移动到该表中。但是,我的网站中使用了许多表,因此这意味着表的数量将增加一倍,并且具有重复的表结构,这可能会在将来导致一致性问题

理想情况下,我希望有一个“RecycleBin”表,将所有记录移动到该表中,但这可能包含100个列,以便能够存储来自所有不同表的数据

如果有人有任何其他想法,我们将不胜感激


谢谢。

我知道的大多数实现都使用删除列,而不是布尔值,而是时间戳,因此您可以知道它是何时被删除的。是的,您需要将其添加到所有查询中,但可能您使用的是ORM层,所以您只需添加一次?我建议往这边走

维基百科对文章的当前版本和存档版本使用多个表格,但这是因为它们的数量太大,而且当前版本的请求频率比旧版本高很多


如果您想使用一个ReCycliBin表,您可能需要考虑将行序列化,并将它们放入值列中,而不是存储所有单独的列。当然,这只有在您不需要查询已删除项目的各个列的内容时才有效,因为这将非常昂贵。

使用IsDeleted列是一种很好的技术


您可以将其与delete而不是trigger结合使用,后者将使用该标志而不是常规的delete操作。您还可以使用视图包装表,以便在视图中只显示非删除行。

啊,好的,听起来是个好主意。我正在考虑创建一个deletedbit列和一个deleteddatetime列,所以您的想法将这两个列结合起来!谢谢