Вставка узла похожа на вставку в модели Списка соседства.
Узел, не являющийся листом, можно вставить без необходимости изменять какую-либо другую строку. Скопируйте path из родительского объекта нового узла и добавьте в эту строку идентификатор нового узла. Если первичный ключ генерирует свое значение автоматически во время вставки, возможно, потребуется вставить строку, а затем обновить path после того, как станет известно значение идентификатора (ID) для новой строки. Например, если используется MySQL, встроенная функция LAST_INSERT_ID () возвращает самое последнее значение идентификатора (ID), сгенерированное для вставленной строки в текущем сеансе. Получите остальную часть пути из родительского объекта нового узла.
Файл npHHepa:_Trees/soln/path-enum/insert.sql
INSERT INTO Comments (author, comment) VALUES ('Олли1, 'Отличная работа!');
UPDATE Comments
SET path = (SELECT path FROM Comments WHERE comment_id = 7)
II LAST_INSERT_ID() I! '/' WHERE comment id = LAST INSERT ID();
Метод Перечисления путей обладает некоторыми недостатками, сходными с теми, которые описывались в главе 2. Базой данных не может быть принудительно установлено, что путь сформирован правильно или что значения пути соответствуют существующим узлам. Обслуживание строки пути зависит от кода приложения, и ее проверка является затратным делом. Не имеет значения, как долго создается столбец VARCHAR. ДЛЯ него по-прежнему существует ограничение по длине, так что, строго говоря, им не поддерживаются деревья неограниченной глубины.
Метод Перечисления путей позволяет легко сортировать набор строк по их иерархии до тех пор, пока элементы между разделителями обладают непротиворечивой длиной.
Опубликовал vovan666
June 18 2013 12:25:04 ·
0 Комментариев ·
4178 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.