假设以下Oracle表:
table master (
name number(18) not null,
version number(5) not null,
constraint master_uq unique(name,version)
)
table child1 (
master_name not null,
....
)
table child2 (
master_name not null,
....
)
.
.
.
table childN (
master_name not null,
....
)
childX表中的列master_name引用主表名称列。
规则是:
这意味着在每个tableN中,可以在逻辑上为主表创建以下外键...
foreign key childX_fk(master_name,1) references master(name,version)
不幸的是,尽管Oracle规则中childX中的外键引用了master中的唯一列组合,但Oracle不喜欢childX_fk外键中版本的硬编码1值。
参照完整性能够从各种子表到主表创建外键真的很好,但是我看不到实现这一点的方法。
有没有人有任何想法?
答案 0 :(得分:1)
您可以使用虚拟列并使用它来引用主列:
create table child1 (
name number(18) not null,
alwaysone number generated always as (case when name1 = name1 then 1 end) virtual,
foreign key (name,alwaysone) references master(name,version)
);