|
|
|
Каскадное обновление значений
|
|||
|---|---|---|---|
|
#18+
Добрый день уважаемые. Собственно, есть задача и пока думаю с какой стороны к ней подойти. Собственно на пальцах: Есть таблица USER. В ней к примеру есть столбцы. USERID - OWNERID OWNERID содержит USERID родителя, если это чаелд. Собственно, заложена неограниченная иерархия и также неограниченно количество разветвлений. Т.е любой чаелд, при создание свое чаелда, стает родителем. Количество чаелд у родителя не ограничено. Есть вторая таблица «RULE_LIST». USERID – RULE1 – RULE2 - RULE3 И вот задача, если USER меняет какое то правило меняется с true на false, то значение это правила, также должно каскадно поменятся у всех его чаелдов, также потомков это чаелда, и путомков потомков. При этом, если с false на true то рекурсивно менять не нужно. Конечно, можно циклами, но может есть какой то более гуманный способ? Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 15:58:36 |
|
||
|
Каскадное обновление значений
|
|||
|---|---|---|---|
|
#18+
С помощью триггера. В функции использовать рекурсивный запрос для получения множества id, по которым выполнить обновление, все это делается одним запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 17:15:08 |
|
||
|
Каскадное обновление значений
|
|||
|---|---|---|---|
|
#18+
Electric200, сделайте триггер на обновление "правила" для родителя, который обновит потомков первого уровня, дальше он сам себя рекурсивно будет вызывать, если есть потомки следующих уровней. Что на что меняется, прямо в триггере и проверяйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2014, 17:19:32 |
|
||
|
Каскадное обновление значений
|
|||
|---|---|---|---|
|
#18+
Спасибо за совет. Действительно, все обошлось тригером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:44:46 |
|
||
|
Каскадное обновление значений
|
|||
|---|---|---|---|
|
#18+
блиин быстрее надо на эту субд переходить, у меня таблица директории(дерево) и надо каскадно менять размер папки.... на мускле, раз тригер на таблицу папки, из него нельзя поменять эту же таблицу. приходиться использовать промежуточную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 15:37:22 |
|
||
|
Каскадное обновление значений
|
|||
|---|---|---|---|
|
#18+
Ну у мены вышло так: Код: plsql 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. И все каскадно меняется.. А так бы пришлось циклами. Та и по сути, не знаю удалось бы. Ведь нету ограничений по разветвлению и вложенности. Но тут гвоздь в том, что не с тригера меняешь, а с процедуры. А ей по сути без разницы что и откуда) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 19:40:36 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38670747&tid=1998625]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
197ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 513ms |

| 0 / 0 |
