假设以下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指主表的名称列。
的规则是:
- 在主表中的每个名字都保证有一排 版本= 1
- 每名在主表中可能还会有其他版本的IE。 2,3等
- childX表引用名称,但不特别感兴趣的版本。
这意味着,在每个tableN以下外键可以在逻辑上创建的,在主表...
foreign key childX_fk(master_name,1) references master(name,version)
不幸的是,尽管甲骨文的规则,在childX外键引用了一个唯一的列在master中的组合是满足的,Oracle不喜欢childX_fk外键中版本的硬编码1值。
对于能够从各种子表创建外键到主表的参照完整性真的很好,但我看不到一种实现这一点的方法。
有没有人有任何想法可能?
如果子表不关心的版本,有说你是存储在'master'的历史原因表而不是填充一个单独的历史表(即'master_history')? –
你错过了'master_master'表,其中'master_name'是唯一的 –
@Vincent - 谢谢,是的,通常我会去做类似以下的事情: – Pancho