Image

Imagem_a_m_o_n wrote in Imageru_java

Category:

SQL Watch

Иногда нужно узанть какой именно код меняет те или иные данные в базе.

Пример из жизни: при выполнении операции регистрации пользователя неожиданно создавалась
запись в таблице счетов, при том - дважды, что было неправильно.
В коде метода регистрации пользователя никаких упоминаний счетов не было.
Чудеса были скрыты в аспекте, который неявно цеплялся к операции регистрации
и делал своё черное дело.

Ещё пример: в большом блоке кода, который редактирует десятки таблиц и
сотни строк, найти тот участок который модифицирует нужную строку, - как?


Я написал небольшой поект, может быть кому нибудь будет полезен:
http://code.google.com/p/sqlwatch/

Весь проект это один класс - логгер к MySQL.
Он позволяет задавать SQL запросы для мониторинга,
и в случае если результат выборки по запросу меняется это можно обработать,
например поставить брейкпоинт и пройти по стеку до строчки в которой непосредственно
был вызван запрос INSERT/UPDATE/etc.

                if (watch("SELECT count(*) from city")) {
                    System.out.println("Changes detected!"); //place breakpoint here
                }