У меня есть иерархическая структура, хранящаяся в таблице.Каждый элемент имеет указатель на свой предыдущий, следующий и родительский
create table CATALOGUE
(
NAME VARCHAR2(300) not null,
NEXT_ID NUMBER(38),
PARENT_ID NUMBER(38),
PREVIOUS_ID NUMBER(38),
XID NUMBER(38)
);
У меня есть Java-приложение, которое использует O / R-сопоставление для доступа и изменения этой таблицы.Иногда мой каталог был поврежден, например, это связанные элементы, которые не имеют одного и того же родителя.Мне интересно, могу ли я обеспечить согласованность данных, используя триггеры Oracle или другой чистый SQL-метод (без Java-кода).
Является ли это "правильным способом" ведения дел?
Как реализовать триггер?Я могу реализовать хранимую процедуру, которая будет проверять мою таблицу.Что-то вроде
select count(*)
from catalogue c1, catalogue c2
where c1.next_id = c2.previous_id and c1.parent_id != c2.parent_id
должно возвращать 0.
Но как я могу вызвать его при коммите?Я не хочу вызывать его при каждом обновлении строки, непосредственно перед завершением фиксации с возможностью отката, если моя таблица недействительна.