rjh*_*rjh 59
MySQL 5.x可以通过INFORMATION_SCHEMA数据库完成此操作.此数据库包含有关表,视图,列等的信息.
SELECT *
FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE
DATE_SUB(NOW(), INTERVAL 1 HOUR) < `UPDATE_TIME`
Run Code Online (Sandbox Code Playgroud)
返回过去一小时内已更新的所有表(UPDATE_TIME).您还可以按数据库名称(TABLE_SCHEMA列)进行筛选.
一个示例查询:
SELECT
CONCAT(`TABLE_SCHEMA`, '.', `TABLE_NAME`) AS `Table`,
UPDATE_TIME AS `Updated`
FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE
DATE_SUB(NOW(), INTERVAL 3 DAY) < `UPDATE_TIME`
AND `TABLE_SCHEMA` != 'INFORMATION_SCHEMA'
AND `TABLE_TYPE` = 'BASE TABLE';
Run Code Online (Sandbox Code Playgroud)
对于要检测更改的每个表,您需要一个包含最后一个更改的时间戳的列.
对于表中的每个插入或更新,您需要使用当前日期和时间更新该列.
或者,您可以设置一个触发器,在每次插入或自动修改时自动更新列.这样您就不必修改所有查询.
一旦这样做,要查明表中的行是否在过去一小时内被修改,请执行查询
select count(*) from mytable where datemod>subtime(now(),'1:0:0')
Run Code Online (Sandbox Code Playgroud)
对要检查的每个表重复此操作.
| 归档时间: |
|
| 查看次数: |
52334 次 |
| 最近记录: |