Вопрос: Как удалить, к примеру, улицу, чтобы удалились ее дома, квартиры этих домов и комнаты в этих квартирах.
Контрол этой таблицы - IBOGrid, датасет этой таблицы - IB_Query (не путать с IBQuery из IBX). Почти такая же штука, как IBDataSet. При попытке удаления запросом
Код: Выделить всё
DELETE FROM Tablica WHERE ID =: OLD_ID OR PARENTI D=: OLD_ID
Я обдумывал вариант - дополнительное поле с какой-нибудь единой характеристикой для всех "родственников узла". Ну, скажем, RELATIONID (Integer) - при вводе нового чилда всегда равен ID самого верхнего родителя. И удалять весь пучок WHERE RELATIONID = : OLD_ID. Но а если надо будет удалять не улицу, а дом? Ведь прихватит с собой и улицу. Усложнять запрос не хочется.
Может быть, это можно сделать процедурой на самом сервере? Мой опыт пока не позволяет это оформить

Да, забыл сказать: в таблице есть еще поле, обозначающее уровень элемента: 0 - улица, 1 - дом, 2 - квартира, 3 - комната.