|
Триггер на дочернюю таблицу
|
|||
---|---|---|---|
#18+
Собственно вопрос, КАК это сделать, если при INSERT триггер срабатывает корректно, а на UPDATE триггер не срабатывает. Кто-то решал такую проблему? Опишу суть. 1. Есть таблица документов - documents 2. В ней есть поле dt_registration 3. Также нарезаны патиции по годам, от 2006 до 2017 Теперь, есть триггер такого вида (на родителе): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
который вызывается при инсерте в таблицу, но при этом есть велика вероятность, что дата регистрации может быть указана не правильно и ее нужно править вручную, для этого пилю новый триггер: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
и точ я вижу, когда запускаю команду : Код: plsql 1.
Код: sql 1.
Хотя по логике должен быть вызван: Код: sql 1.
Пока я в тупике, может есть варианты как это обойти? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2017, 15:33 |
|
Триггер на дочернюю таблицу
|
|||
---|---|---|---|
#18+
Sheriffua, 2 варианта. 1. "неправильный" (на мой вкус) -- вью вместо головной с "инстеад-офами". (где-то тут было в примерах у легушки расписано 19757774 ) удобства -- в RETURNING-ах (их "поддержке" на уровне "головных") 2. более, на мой вкус, верный -- триггера на апдейт на партициях. (например проверять только констрайнт, и , удалив при необходимости , невлезающее -- перевставлять запись в "головную", не копируя* логику разброса по партициям из триггера вставки) неудобства -- в RETURNING-ах , вернее их отсутствии (при BEFORE тр--ах). удобство -- например в доступности tableoid --ов. * спорно, если бороться за произв-сть. "зато" меньше дублирующего кода ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2017, 15:55 |
|
Триггер на дочернюю таблицу
|
|||
---|---|---|---|
#18+
qwwq, спасибо за предоставленные варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 12:21 |
|
Триггер на дочернюю таблицу
|
|||
---|---|---|---|
#18+
qwwq, может еще подскажите как привязаться к динамической дате? делаю так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
это срабатывает только для дочерних таблиц, если они созданы для атрибута DT_REGISTRATION, НО есть такой вариант, что может быть запись с несуществующей дочерней таблицей, т.е. дата будет 01-05-1899 (как следствие нет таблицы documents_1899) и такую запись хотелось бы помещать в таблицу, например - documents_musor. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 14:22 |
|
Триггер на дочернюю таблицу
|
|||
---|---|---|---|
#18+
Сделал так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
может как-то криво, но ничего другого в голову пока не пришло. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 16:32 |
|
Триггер на дочернюю таблицу
|
|||
---|---|---|---|
#18+
Sheriffua, и так делал -- когда пишут датчики со сбитым временем это как бы правильное решение, пока сервер не сгуляет своим временем куда-то не тудой. и создавал партиции в прошлом и будущем динамически -- пока мусор не надоел. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 20:14 |
|
|
start [/forum/topic.php?fid=53&fpage=69&tid=1996337]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
32ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 25ms |
total: | 164ms |
0 / 0 |