SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.03.2009 10:51:56

Zloi_kot
Участник
Зарегистрирован: 24.03.2009
Сообщений: 3

Узнать текст запроса

Здравствуйте!
Пытаюсь сделать что-то навроде резервного копирования с использованием триггеров, суть следующая:
допустим у меня есть таблица 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`=?????;
вот незнаю как вместо вопросиков получить тест запроса. Помогите люди добрые

Неактивен

 

#2 24.03.2009 13:12:35

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Узнать текст запроса

Вообще говоря, триггеры для этого не предназначены. Для этого предназначен бинарный лог,
который ровно это и делает — пишет запросы изменения таблиц. В текстовом виде.

Для случая триггеров, боюсь, Вам прийдется писать «почти такой же» запрос вручную.

Неактивен

 

#3 24.03.2009 14:06:13

Zloi_kot
Участник
Зарегистрирован: 24.03.2009
Сообщений: 3

Re: Узнать текст запроса

а можно поподробнее по поводу примененя бинарноо лога этого

Неактивен

 

#4 24.03.2009 14:43:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Узнать текст запроса

Нужно запустить сервер с ключом --log-bin, начнут записываться логи изменений.
В текстовом виде смотреть логи можно с помощью команды mysqlbinlog <название файла>.

Неактивен

 

#5 24.03.2009 15:34:39

Zloi_kot
Участник
Зарегистрирован: 24.03.2009
Сообщений: 3

Re: Узнать текст запроса

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

Неактивен

 

#6 24.03.2009 17:41:52

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Узнать текст запроса

Можно или логировать только для нужной таблицы (--binlog-wild-do) или просто отсеивать нужную
информацию. Новый файл можно сделать командой FLUSH LOGS.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson