是否可以在Oracle(> 11g)中对字段值子集强制实施参照完整性?
例如,基于函数的引用完整性,如基于函数的索引。 或仅在表的一个特定分区上引用完整性。
例如,我有一个history_value_table (varname VARCHAR2(30), value VARCHAR2(100))
表。
我只想在value
{/ 1}}的{{1}}强制实施参照完整性
因此,如果我基于varname = 'TEST'
对表进行分区,则引用完整性约束只会放在varname
的分区上。或者,如果基于函数的参照完整性是可能的,那么它将基于如下内容:varname = 'TEST'
。
答案 0 :(得分:1)
您可以创建如下虚拟列:
ALTER TABLE ... ADD value_UC VARCHAR2(100) GENERATED ALWAYS AS
(CASE varname WHEN 'TEST' THEN varname ELSE NULL END);
然后,您可以在该列上创建唯一约束,并将其用于参照完整性。
请注意ELSE NULL
,ELSE '1'
不起作用