Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по отладке триггеров / 2 сообщений из 2, страница 1 из 1
09.07.2014, 12:39:29
    #38691772
VonHamster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по отладке триггеров
Ситуация следующая (постараюсь описать подробно картину):
1. есть таблица t1 в базе db1
2. есть таблица t2 в базе db2
3. есть таблица log в базе db1
4. Они на одном сервере, полные права для пользователя, под которым к ним происходит коннект.
5. На таблицу t1 ставлю триггер, который преобразует данные и перекидывает в t2 (на добавление и обновление), на удаление стоит удаление соответствующей записи из t2.
6. На таблицу t2 ставлю триггер, который записывает изменения в лог-таблицу (идентификатор, тип изменения, старое и новое значение, если есть).

Запросы в триггерах простые (логики нет, просто преобразование).

Проблема в следующем:
1. когда данные пишутся в t1 триггеры срабатывают не всегда (тоесть часть данных попадает в t2, а часть нет (зависимость от данных выявить не удалось, тоесть при одном обновлении - одни не попали, при другом - другие)). При этом таблица логов исправно фиксирует измененные в t2 данные, и не фиксирует те, что пропущены.
2. Когда запускаю обновление принудительно (update t1 set field1=field1) - все данные обновляются нормально в t2.

Вопросы:
1. Каковы возможные причины такого поведения?
2. Как можно отследить, что происходит в базе, отловить причину, почему не запускается триггер?
...
Рейтинг: 0 / 0
09.07.2014, 12:48:02
    #38691787
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по отладке триггеров
VonHamsterСитуация следующая (постараюсь описать подробно картину):
1. есть таблица t1 в базе db1
2. есть таблица t2 в базе db2
3. есть таблица log в базе db1
4. Они на одном сервере, полные права для пользователя, под которым к ним происходит коннект.
5. На таблицу t1 ставлю триггер, который преобразует данные и перекидывает в t2 (на добавление и обновление), на удаление стоит удаление соответствующей записи из t2.
6. На таблицу t2 ставлю триггер, который записывает изменения в лог-таблицу (идентификатор, тип изменения, старое и новое значение, если есть).

Запросы в триггерах простые (логики нет, просто преобразование).

Проблема в следующем:
1. когда данные пишутся в t1 триггеры срабатывают не всегда (тоесть часть данных попадает в t2, а часть нет (зависимость от данных выявить не удалось, тоесть при одном обновлении - одни не попали, при другом - другие)). При этом таблица логов исправно фиксирует измененные в t2 данные, и не фиксирует те, что пропущены.
2. Когда запускаю обновление принудительно (update t1 set field1=field1) - все данные обновляются нормально в t2.

Вопросы:
1. Каковы возможные причины такого поведения?
2. Как можно отследить, что происходит в базе, отловить причину, почему не запускается триггер?


=======
наверняка спецы получше придумают , но я пока сделал так.

таблица runs(id,datetime,procname,extra)
stored procedure(datetime,name,extra);

и где мне надо отследить факт запуска, или не запуска, срабатывания или нет какойто секции кода(условного блока, сколько раз цикл)
вставляю временно вызов процедуры и пишу туда информацию которая мне поможет по логам понять почему чтото не работало...

кстате аналогично часть данных преобразованых не попадала... оказалось что в вложеной логике ифов(преобразование зависит от того что и как менялось) я упустил один возможный вариант.

и потом по логу смотрю как у меня поэтапно всё было.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по отладке триггеров / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]