在字段值子集上强制引用完整性

时间:2014-08-07 11:20:37

标签: oracle oracle11g

是否可以在Oracle(> 11g)中对字段值子集强制实施参照完整性?

例如,基于函数的引用完整性,如基于函数的索引。 或仅在表的一个特定分区上引用完整性。

例如,我有一个history_value_table (varname VARCHAR2(30), value VARCHAR2(100))表。

我只想在value {/ 1}}的{​​{1}}强制实施参照完整性

因此,如果我基于varname = 'TEST'对表进行分区,则引用完整性约束只会放在varname的分区上。或者,如果基于函数的参照完整性是可能的,那么它将基于如下内容:varname = 'TEST'

1 个答案:

答案 0 :(得分:1)

您可以创建如下虚拟列:

ALTER TABLE ... ADD value_UC VARCHAR2(100) GENERATED ALWAYS AS 
(CASE varname WHEN 'TEST' THEN varname ELSE NULL END);

然后,您可以在该列上创建唯一约束,并将其用于参照完整性。 请注意ELSE NULLELSE '1'不起作用