如何确定innodb表的上次修改日期?根据{{3}}问题,似乎多年来一直存在未修复的bug。我不能使用校验和因为我正在使用大型表并且计算校验和需要太长时间。并且触发器看起来也不是正确的解决方案,因为我只是不想为表格的hundrets编写触发器。还有其他方法可以达到这个目的吗?
我需要整个表的最后修改日期(删除,插入,更新),而不是单行。
编辑:
我认为没有可接受的方法来确定这一点而不修改现有的查询或创建触发器,所以仅检查表是否被修改就足够了。正如我所说,使用CHECKSUM TABLE...
可以实现这一点,但对于大型innodb表来说这是非常慢的。有没有更好的算法来实现这个目标?
答案 0 :(得分: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
您只需要使用您的参数将连接更改为空字符串。