Запрос для нахождения таблиц измененными в прошлый час

Я хочу узнать, какие таблицы были изменены в прошлый час в базе данных MySQL. Как я могу сделать это?

32
задан Vaishali 27 June 2013 в 04:15
поделиться

2 ответа

MySQL 5.x может сделать это через базу данных INFORMATION_SCHEMA. Эта база данных содержит информацию о таблицах, представлениях, столбцах и т. Д.

SELECT * 
FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE 
    DATE_SUB(NOW(), INTERVAL 1 HOUR) < `UPDATE_TIME`

Возвращает все таблицы, которые были обновлены (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';
59
ответ дан 27 November 2019 в 20:20
поделиться

Для каждой таблицы, в которой вы хотите обнаружить изменения, необходимо иметь столбец, содержащий временную метку последнего изменения.

При каждой вставке или обновлении таблицы необходимо обновлять этот столбец текущей датой и временем.

В качестве альтернативы можно настроить триггер, который автоматически обновляет столбец при каждой вставке или изменении. Таким образом, вам не придется изменять весь запрос.

Как только это сработает, чтобы узнать, были ли строки таблицы изменены за последний час, выполните запрос

select count(*) from mytable where datemod>subtime(now(),'1:0:0')

Повторите для каждой таблицы, которую вы хотите проверить.

5
ответ дан 27 November 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: