确保Oracle表中多个层次结构的有效性

时间:2011-12-03 03:51:42

标签: oracle plsql

我将多个层次结构存储在Oracle表(父,子,根列的标准模型)中,并且有兴趣找出我应该考虑的约束,以确保层次结构保持正确和有效。

我想确保对于每一行,child,parent和root列都有意义(例如,不能为两个不同的层次结构定义相同的根,如果子存在,那么它的父节点等)

我知道通过使用没有约束定义的链接表(!!)不一致/不完整的数据总是以某种方式爬行,无论应用程序多么小心地避免它。< / p>

现在考虑触发器通常应该避免除了简单的情况之外的所有情况,我无法看到如何为此编码约束,存储过程是唯一真正的方法(可能是可序列化的事务模式集)?

1 个答案:

答案 0 :(得分:1)

您无法在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
/