mysql - 在mysql表中记录列级别的变化

标签 mysql audit-tables

我的客户希望维持栏目级别的审计。他想要一个存储所有审计的表,即在列级别。我已经决定了表结构。即

id,tablename,tablecolumn,primarkey,oldvalue,newvalue,date

但我想知道如何检查每个列级别的更改。我是否必须像 old.columnname <> new.columnname 一样手动检查每一项,然后添加到审核表中?

还有其他办法吗?

最佳答案

当我接受相同的任务时,我创建了多个存储过程来修改表数据,并限制表上的 CUD 操作以强制用户仅使用存储过程。

SP 实际上正在执行请求的操作(即创建、更新或删除表中的行),并为每个操作向审核表添加一行。

从数据库优化的角度来看,这可能非常低效,但我认为它为您提供了最多的审核,因为更新操作和审核会自动放入事务中,并且如果不添加审核条目就无法完成更新。

关于mysql - 在mysql表中记录列级别的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475838/

相关文章:

NULL 值的 MySQL 基数

mysql - 合并两个表并查看日期

mysql - 如何设计具有撤消重做功能的 SQL 数据库?

oracle - "audit create session by session"与 "audit create session by access"?

mysql - 可以将 RDBMS 的 COMMIT 事务/"all-or-nothing"范例映射到 R 吗?

python - 为什么 MySQL 驱动程序/客户端(例如 MySQLdb 或 mysqlclient 或 PyMySQL)即使在像 Tornado 这样的异步 Web 框架中使用时也会被视为阻塞?

php - MYSQL 使用密码被拒绝访问(NO)

mysql - 获取触发器以仅在审计表中插入更改的列值

database - SQL Server 2005 审计