基本上,我正在尝试创建一个告诉管理员的界面“嘿,我们运行了这个查询,我们对它不太确定,所以如果它破坏了点击这里撤消它”。
我能想到的最简单的方法是以某种方式弄清楚识别出的“冒险”查询写入的表格和单元格,并将这些数据与一些簿记数据一起存储在“备份”表中,以便在必要时这些字段可以用原始内容重新填充。
如何确定哪些字段被特定(可能很复杂)的mysql命令覆盖?
编辑:“冒险”在成功完成但做出不需要的事情方面,而不是在抛出错误或失败并使系统处于不一致状态方面。
答案 0 :(得分:0)
我建议以下事项:
- 为要监控的每个表添加一个AFTER UPDATE触发器
- 创建要监视的每个表的副本(例如:[yourtable] _backup)
- 在所有AFTER UPDATE触发器中,添加代码:INSERT INTO yourtable_backup VALUES(OLD.field1,OLD.field2 ...,OLD.fieldN)
工作原理:AFTER UPDATE触发器检测到表的更新,并将旧值备份到备份表中
重要提示:您需要使用INNODB表格式才能使触发器正常工作。触发器不适用于MyISAM表。
您可以在备份表中添加时间戳字段,以了解每行的插入时间。
文档:http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html