|
1
4
我在SQLServer2005中实现了这一点,对任何软删除表使用了INSTEADOF触发器进行删除。触发器设置删除标志并执行清理。此解决方案的优点在于,它能够正确处理任何访问数据库的系统发出的删除。我知道在SQL Server中有一个与Oracle相当的版本,而不是相对较新的版本。 这个解决方案还可以很好地与我们的O/R映射器配合使用——我创建了过滤掉软删除记录并映射这些记录的视图。这些视图也用于所有报告。 |
|
|
2
2
|
|
|
3
0
这取决于您使用的是自助服务还是适配器。如果需要,您需要修改模板,以便它为您设置标志,而不是删除实体。 如果是adapter,则可以从DataAccessAdapter继承并重写delete方法来为您设置标志,而不是删除实体。 对于性能来说,这通常是一个糟糕的解决方案,因为每个查询都需要过滤掉“已删除”的实体,而且因为“已删除”列的选择率不会很高(所有“未删除”的记录都是空的,我猜这将是大多数记录)为它编制索引并不会给您带来很多好处—您最终会得到大量的表扫描。 |