Убедитесь в правильности нескольких иерархий в таблице Oracle - PullRequest
2 голосов
/ 03 декабря 2011

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

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

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

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

1 Ответ

1 голос
/ 03 декабря 2011

Вы не можете определить внешний ключ, ссылающийся на ту же таблицу ограничения, в операторе CREATE TABLE, но вы можете сделать это с помощью инструкции ALTER TABLE.

create table XXX (
    key number primary key,
    parent number
)
/

alter table XXX add constraint XXX_FK foreign key (parent) references XXX
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...