Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Пытаюсь сделать что-то навроде резервного копирования с использованием триггеров, суть следующая:
допустим у меня есть таблица DbTable с полями id, fio и age например
я создаю дополнительную таблицу DbTableLog с полями id, query и date
далее для таблицы DbTable делаю триггер AFTER INSERT и хочу чтобы он мне в табличку DbTableLog в поле querry писал запрос с помошью которого было вставлено новое значение. Если еще добавить аналогичные триггеры AFTER UPDATE и AFTER DELETE nj в таблице DbTableLog буду иметь все запросы с помошью которых можно получить таблицу DbTable в актуальном состоянии.
Весь вопрос в том как получить текст запроса в триггере
CREATE TRIGGER `LogTrigger` AFTER INSERT ON `DbTable`
FOR EACH ROW
INSERT INTO `DbTableLog` SET `query`=?????;
вот незнаю как вместо вопросиков получить тест запроса. Помогите люди добрые
Неактивен
Вообще говоря, триггеры для этого не предназначены. Для этого предназначен бинарный лог,
который ровно это и делает — пишет запросы изменения таблиц. В текстовом виде.
Для случая триггеров, боюсь, Вам прийдется писать «почти такой же» запрос вручную.
Неактивен
а можно поподробнее по поводу примененя бинарноо лога этого
Неактивен
Нужно запустить сервер с ключом --log-bin, начнут записываться логи изменений.
В текстовом виде смотреть логи можно с помощью команды mysqlbinlog <название файла>.
Неактивен
ага, почитал я тут немножко в инете про это , а вот такой вопрос, смогу ли я отслеживать изменения только в какойто конкретной таблице и сделать так чтобы у меня каждый день создавался новый файл этих изменений?
Неактивен
Можно или логировать только для нужной таблицы (--binlog-wild-do) или просто отсеивать нужную
информацию. Новый файл можно сделать командой FLUSH LOGS.
Неактивен