在我的页脚,我想添加一些东西,如“上次更新xx/xx/200x”,这个日期是最后一次某个mySQL表已更新。
最好的方法是什么?是否有检索最近更新日期的函数?每次需要这个值时,我都应该访问数据库吗?
在我的页脚,我想添加一些东西,如“上次更新xx/xx/200x”,这个日期是最后一次某个mySQL表已更新。
最好的方法是什么?是否有检索最近更新日期的函数?每次需要这个值时,我都应该访问数据库吗?
当前回答
我让它在本地工作,但不是在我的公共网站的共享主机上(我想是配股问题)。
SELECT last_update FROM mysql.innodb_table_stats WHERE table_name = 'yourTblName';
'2020-10-09 08:25:10'
MySQL 5.7.20-log在win8.1上
其他回答
在MySQL的新版本中,你可以使用information_schema数据库来告诉你什么时候另一个表被更新了:
SELECT UPDATE_TIME
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME = 'tabname'
这当然意味着打开到数据库的连接。
另一种选择是每当MySQL表更新时“触摸”一个特定的文件:
数据库更新:
以O_RDRW模式打开时间戳文件 再次关闭
或者
使用touch(),相当于PHP中的utimes()函数,来更改文件时间戳。
页面显示:
使用stat()读取文件修改时间。
当查询不可用时,将查询缓存在全局变量中。
创建一个网页,在更新缓存时强制重新加载缓存。
将对重新加载页面的调用添加到部署脚本中。
和其他人一样,但是我使用了一些条件,以节省时间:
SELECT
UPDATE_TIME,
TABLE_SCHEMA,
TABLE_NAME
FROM
information_schema.tables
WHERE
1 = 1
AND UPDATE_TIME > '2021-11-09 00:00:00'
AND TABLE_SCHEMA = 'db_name_here'
AND TABLE_NAME not in ('table_name_here',)
ORDER BY
UPDATE_TIME DESC,
TABLE_SCHEMA,
TABLE_NAME;
我会创建一个触发器,捕捉所有更新/插入/删除,并在自定义表中写入时间戳,类似于 表名|时间戳
只是因为我不喜欢直接读取db服务器的内部系统表的想法
对于最近的表更改列表,使用这个:
SELECT UPDATE_TIME, TABLE_SCHEMA, TABLE_NAME
FROM information_schema.tables
ORDER BY UPDATE_TIME DESC, TABLE_SCHEMA, TABLE_NAME