|
|
|
Вопрос по отладке триггеров
|
|||
|---|---|---|---|
|
#18+
Ситуация следующая (постараюсь описать подробно картину): 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. Как можно отследить, что происходит в базе, отловить причину, почему не запускается триггер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 12:39:29 |
|
||
|
Вопрос по отладке триггеров
|
|||
|---|---|---|---|
|
#18+
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); и где мне надо отследить факт запуска, или не запуска, срабатывания или нет какойто секции кода(условного блока, сколько раз цикл) вставляю временно вызов процедуры и пишу туда информацию которая мне поможет по логам понять почему чтото не работало... кстате аналогично часть данных преобразованых не попадала... оказалось что в вложеной логике ифов(преобразование зависит от того что и как менялось) я упустил один возможный вариант. и потом по логу смотрю как у меня поэтапно всё было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 12:48:02 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1834539]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
22ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 290ms |

| 0 / 0 |
