在table A
中,我有一个由3个字段组合而成的primary key
,在table B
我有一个复合(不是唯一的)。我想引用table A
来简化delete
(ON DELETE CASCADE
)。
那么,我是否被迫将其他两个字段放在表格B中并使用此composite
进行引用,还是有其他解决方案?
答案 0 :(得分:3)
如果要在两个表之间创建外键约束,子表必须包含构成父表的主键约束的所有列(这是我不鼓励使用的原因之一)复合主键)。如果希望Oracle在删除父行时自动删除子行,则需要使用ON DELETE CASCADE
的外键约束。所以你的选择是
答案 1 :(得分:1)
您可以在表A中创建新的单列(可能是序列生成的)主键,并使现有的组合键成为唯一键而不是主键。然后从表B中引用新的主键。