1

如何确定 innodb 表的最后修改日期?根据这个问题,似乎多年来一直存在未修复的错误。我不能使用校验和,因为我正在处理大型表并且计算校验和需要太长时间。而且触发器看起来也不是正确的解决方案,因为我只是不想为数百个表编写触发器。还有其他方法可以实现吗?

我需要整个表的最后修改日期(删除、插入、更新),而不是单行。

编辑:我认为在不修改现有查询或创建触发器的情况下,我没有可接受的方法来确定这一点,因此只需检查表是否被修改就足够了。正如我所说,这可以使用CHECKSUM TABLE...,但对于大型 innodb 表来说非常慢。有没有更好的算法来实现这一点?

4

1 回答 1

0

尝试创建一个包装程序,它将执行您的语句并更新当前时间。

这回答了您的评论:

“这将阻止您为数百个表编写触发器:”

由于某些错误,卡住的溢出不允许我发布此类过程的示例代码,

您可以毫无问题地“执行”该命令,我现在已经对其进行了测试并且可以正常工作。您必须以“调用 my_procedure('insert/update/delete ...')”的形式执行您的过程

 PREPARE s1 FROM @sql;
 EXECUTE s1;
 DEALLOCATE PREPARE s1;

这是有关如何创建此类过程的链接http://www.java2s.com/Code/SQL/Procedure-Function/EXECUTEdynamicSQLcommand.htm

您只需使用参数将连接更改为空字符串。

于 2012-08-01T14:05:15.147 回答