使用 MySQL 跟踪数据库更改历史
许多数据库系统需要能够跟踪一段时间内对记录所做的更改。 MySQL 提供了一种简单的技术来实现这一点。考虑一个名为“data”的数据表,您要监视它的更改。
首先,为“data”创建一个具有相同结构的历史表,除了三个附加列:
这些列存储操作(插入/更新/删除)、序列号以及操作的日期和时间。
接下来,创建触发器来捕获这些操作并填充历史表:
现在,所有数据更改都会记录在“data_history”表中。要显示更新中特定列的更改,您可以在主键和序列列上将历史表与其自身连接:
CREATE VIEW data_history_changes AS SELECT t2.dt_datetime, t2.action, t1.row_id, IF(t1.a_column = t2.a_column, t1.a_column, t1.a_column || " to " || t2.a_column) AS a_column FROM data_history AS t1 INNER JOIN data_history AS t2 ON t1.row_id = t2.row_id WHERE (t1.revision = 1 AND t2.revision = 1) OR t2.revision = t1.revision + 1 ORDER BY t1.row_id ASC, t2.revision ASC
这应该提供对历史表所做的所有更改的紧凑历史视图“数据”表。
以上是如何使用触发器和视图跟踪和查看 MySQL 中的数据库更改?的详细内容。更多信息请关注PHP中文网其他相关文章!