我知道有两种方法可以从数据库表中删除数据
现在isActive的问题在于我必须在我的SQL查询中跟踪记录是否处于活动状态。但是,使用DELETE可以永久删除数据。
备份这些数据的最佳方法是什么?
假设我在数据库中有多个表,我应该有一个只支持所有内容的常用函数并将其存储在另一个表中(可能是XML格式吗?)还是有其他方法。
我正在使用MySQL,但我对其他数据库中使用的技术感到好奇。
答案 0 :(得分:13)
将表替换为隐藏非活动项的视图。
或者在DELETE上写一个触发器,将行备份到存档表。
答案 1 :(得分:2)
您可以使用触发器在删除记录时触发,将它们备份到某种墓地表中。
答案 2 :(得分:2)
您可以使用isDeleted列并使用条件isDeleted = false来定义除了isDeleted之外的所有列的视图。然后让所有stps只适用于视图。
答案 3 :(得分:1)
您可以维护一个历史记录表,在该表中备份记录和时间戳
答案 4 :(得分:1)
不删除数据的最大原因之一是关系可能需要它 - 例如,用户可能决定从数据库中删除旧客户,但您仍需要客户记录,因为它是由旧发票引用的(可能有更长的使用寿命)。
基于此,最佳解决方案通常是“IsDeleted”类型的列,并结合视图(Quassnoi提到了分区,这可以帮助解决由于大量不可见数据而可能出现的性能问题)。 p>
答案 5 :(得分:0)
您可以在DELETED
列上对表进行分区,并定义包含条件的视图:
… AND deleted = 0
这将使对活动数据的查询同样简单有效。
答案 6 :(得分:0)
好吧,如果您使用的是SqlServer,则可以使用触发器,这样您就可以将记录移动到已删除的表中。