sql server记录修改追踪和恢复的解决方法

发布时间:2020-03-10编辑:脚本学堂
客户要求:使用者操作数据库关键记录时要记录使用者的ID,时间,修改的内容等,在必要的情况下要回滚到某一时刻的记录内容。

客户要求
使用者操作数据库关键记录时要记录使用者的ID,时间,修改的内容等,在必要的情况下要回滚到某一时刻的记录内容。
本文为大家介绍两种解决这类问题的方法,供大家学习参考。
 
一、数据表冗余记录法

    在关键的数据库表中,加入 "创建时的日期时间"、"创建用户"、"修改或删除时的日期时间"、"修改或删除用户"、"记录状态" 等字段,当然了字段名可以简化,这里为了更好的说明。“记录状态”包括“当前可用”和“存档”两种状态。当用户修改记录时,要执行两步操作 1).更新当前数据库记录,记录修改者和时间,把“记录状态”改成“存档”。2)新建一条记录,把修改者和时间作为创建者和时间存入,保存新的记录内容,而“记录状态”为“当前可用”。 如果用户删除记录,只是执行第一步操作即可。

    这种方案可以用程序在前台方便的察看记录修改历史情况,并可以很容易的回滚到“某一时刻”,这里的回滚不是真正的回滚,仍然要在表里新建记录,和上面提到的修改记录操作相同,只不过记录的内容是“某一时刻”的内容而已。

    使用这种方法会造成数据库表中记录的过多存储,在查询和统计时性能会有影响。

二、新建数据表记录操作

    在数据库中为关键数据表建立对应的“操作记录表”,所有对关键记录的修改、删除甚至读取都可以记录在“操作记录表”中,具体的实施可以在程序代码中控制,但更好的方法是可以使用触发器控制。

    这种方案也可以在前台方便的察看记录修改历史情况,并可以很容易的回滚。