MySQL - 数据库中*数据*的更改跟踪?

标签 mysql audit change-tracking

我有一种情况需要跟踪 MySQL 数据库中数据的所有更改。

例如,我们在“客户”表中有一个字段,其中包含一个评级,表明与该客户做生意的风险有多大。每当更改此字段时,我都需要将其记录下来,以便我们可以返回并说“好吧,他们是 3,现在他们是 8”,例如。在 MySQL 中是否有任何自动处理此问题的方法,或者我是否只需要将大量更改跟踪逻辑写入应用程序本身?

最佳答案

假设您使用的是 5+ 版本的 MySQL,这是为 MySQL 内部设计的触发器类型。

CREATE TRIGGER log_change_on_table BEFORE UPDATE ON customers
    FOR EACH ROW
        BEGIN
            INSERT INTO customer_log (customer_id, rating, date)
                VALUES (OLD.customer_id, OLD.rating, now())
        END $$

关于MySQL - 数据库中*数据*的更改跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603890/

相关文章:

mysql - 是否可以优化我的 SQL 请求?如果是的话怎么办?

php - 从两个或多个具有某些列名的 sql 表中选择

MySQL 尝试从临时表中存储的值更新表

c# - Entity Framework 的快照历史

java - 我是否需要为 Spring Data 中的可审计字段提供 getter/setter?

c# - sql server 数据库中的审计记录更改

mysql - Node.js mysql 事务

Oracle - 在更新时触发以创建历史记录行

.net - 在SQL Server 2008数据库中维护数据历史记录的方法

sql-server - 如何将 SQL Server 更改跟踪与 Entity Framework 一起使用