parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 25.04.2016 18:27 / 25.04.2016 18:29

Триггеры мне нужны, чтобы правильно манипулировать деревьями.
Они привязывают логику к БД, что может быть удобно в редких случаях, но неудобно в принципе.
Это всего лишь срабатывающие по условию запросы.
Нужно взять сами запросы и использовать их.
Не знаю как это делать, не представляю даже.
Все операции над узлами состоят из небольшого количества простых операций: извлечь всех предков, извлечь всех потомков и себя, сгенерировать связи, удалить связи.

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

При переносе узла нужно:
1. извлечь всех потомков узла, включая его самого;
2. извлечь всех предков узла;
3. извлечь всех предков нового родительского узла, включая его самого;
4. удалить все связи между извлечёнными предками (2) и потомками (1);
5. создать связи нужной дистанции между новыми предками (3) и потомками (1).