1
4
如果有一个历史记录表(一个与原始表具有相同列的表,再加上一个自动递增ID列),则可以跟踪有关原始表更改的所有信息。您可以跟踪插入、删除和每次更改。使用插入、更新和删除触发器将行放入历史记录表。如果你不需要所有这些选择,那么就使用那些你确实需要的。 如果选择在原始表中使用isDeleted标志,则会使每个查询复杂化,并使活动表中保留大量不需要的行。但这是可行的,取决于你的需要。 |
2
1
我曾经看到过设计有位字段的表被删除,当然默认值被设置为假。删除项目时,此值设置为true。然后,所有查询都需要影响到这一点:
这样,如果您“意外”删除了一行,则应该能够将其恢复。您还可以清除记录,例如每周/每月/每年。 这对你来说只是个主意。 |
3
1
如果您使用的是SQL Server 2008,则可以利用 new auditing features . |
4
0
将记录标记为“已删除”=1,不要删除它。在删除时执行触发器,而不是更新… |
5
0
我还看到一个重复的表,在名称中添加了一个标准化的前缀。所有删除的行都将移动到重复表中。这样可以消除保留原始表中的行但忽略这些行的开销。 |
6
0
所有操作(插入-更新-删除)都应记录在日志表中。我总是记录操作、时间戳和触发操作的用户。向原始表中添加isDelete列是不好的做法。 |
7
0
如果您使用的是SQL 2008,那么可以使用CDC(变更数据捕获)进行跟踪。 下面的链接提供了完整的详细信息。如果为特定表启用CDC,则将自动收集删除数据。 |
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |