完整性约束使 sur 两列包含两个相关表的相同值

Integrity constraints to make sur two columns contain same values for two related tables

我的 oracle 数据库中有两个表。

+--------+                     +---------+    
+ data   + --1..0-------0..n --+   PAQ   +  
+--------+                     +---------+

PAQ 有很多数据。

以下是制作方法的示例:

create table data {
data_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
value number,
data_date date,
E_FLAG char,
paq_id number,
primary key(data_id),
foreign key(paq_id) references paq.paq_id
}

create table paq {
paq_id number generated by default as identity,
E_FLAG char,
...
primary key(paq_id)
}

有一个名为 E_FLAG 的重复列。

我想投保以下项目:
如果 data1 属于 paq1,则 data1.E_FLAG == paq1.E_FLAG。 在 oracle 中使用完整性约束。

这可能吗?

正确的答案是规范化数据模型而不是复制 data table 中的列。

也就是说,如果您在 paq

上创建唯一索引
create unique index uniq_paq_flag
    on paq( paq_id, e_flag );

然后您可以对该组合创建外键约束,以确保 e_flag 值匹配

alter table data
  add constraint fk_match_flag 
    foreign key( paq_id, e_flag ) 
    references paq( paq_id, e_flag );