Я храню несколько иерархий в таблице Oracle (стандартная модель родительского, дочернего, корневого столбцов), и мне было интересно узнать, какие ограничения я должен учитывать, чтобы убедиться, что иерархия остается правильной и действительной.
Я хотел бы убедиться, что для каждой строки все дочерний, родительский и корневой столбцы имеют смысл (например, один и тот же корень не может быть определен для двух разных иерархий, если существует дочерний элемент, так же как и его родительский и т. Д.)
Я знаю по работе со связанными таблицами, которые были определены без ограничений (!!) противоречивые / неполные данные всегда ползет так или иначе, независимо от того, насколько тщательно приложение пытается избежать этого.
Теперь следует избегать рассмотрения триггеров для всех, кроме простых случаев, и я не понимаю, как кодировать для этого ограничение. Является ли хранимая процедура единственным реальным путем (предположительно с установленным режимом сериализуемой транзакции)?