如何在mysql中管理更改记录的审计跟踪


way to manage audit trail of changing record in mysql

我正在构建一个应用程序。它基本上是一个电子商务订单履行应用程序。在这次审计试验中,即谁改变了什么以及改变了多少次,以及其他方面都是一个重要方面。我应该如何在数据库/表级别维护它?比如说,如果一个记录被3个人更改,我将如何维护所有的更改以及谁更改了什么?

首先,您需要为每个想要跟踪的表创建这样的结构:

create table user_track_logs {
    id bigint(20) primary key auto_increment,
    key_id int (11),
    user_id (int),
    created timestamp default now(),
    field varchar(128)// set bigger if you have long named columns (like this_columns_is_very_important_for_me_and_my_employers...)
    field_value_was text null,
    field_value_new text null,    
}

其次,您需要在MySQL的连接中的var中设置当前用户ID,或者您可以使用MySQL的用户。您可以为每个用户创建单独的MySQL登录名。

第三次创建触发器insert/update/delete,将存储在user_track_logs中。

或者,您可以在PHP中模拟这个过程,但在PHP中会更加困难。