两种做法
一种偏向“物理表”,记录动作表名,动作内容,动作者,动作时间,实现动作的SQL
还可以加一张子表,记录修改时的内容。另一种偏向“逻辑表”,对业务内容进行描述,如采购单、销售单什么的,动作也比较“业务“如,填报、审批、修改、复核、作废以前也这样做过:每张表都有固定的创建人、创建时间、修改人、修改时间、和版本号,就是说删除、修改都不会影响原有记录,只是新增一条。缺点是,必须从头开始开发,中途改成这样,工作量大,也挺占空间时间的,不过到是挺安全。

解决方案 »

  1.   

    newdongkui(老乌鸦) :
      我也考虑过我的系统,我认为做成偏向“物理表”要简单些,但是一旦用户登陆的每一个动作都要记录是很困难的,特别是在我写的程序中,在操作时,有时用的直接执行sql,有时用的缓存,特别是用缓存时的修改很难搞清客户到底怎样做的。我一直没想出个完美的方法,你能否指点一下。
      

  2.   

    1.不要在程序里直接使用 update \ insert \ delete 这样的SQL语句应该避免,都用存储过程代替,好处很多,就不说了。
    2.在存储过程里,加入你的日志语句还有个做法,就是在触发器里实现,不过多表写的时候,复杂些,你的人员类时间类信息字段也不能剩。继续