在 表 A
中,我有 3 个字段的组合作为 主键
,在 表 B
中我有得到了其中一个复合 Material (这不是唯一的)。我想引用 table A
以简化 delete
(使用 ON DELETE CASCADE
)。
那么,我是否必须将其他两个字段放在表 B 中并使用此 composite
进行引用,还是有其他解决方案?
最佳答案
如果要在两个表之间创建外键约束,则子表必须具有构成父表主键约束的所有列(这是我不鼓励使用的原因之一复合主键)。如果您希望 Oracle 在删除父行时自动删除子行,则需要使用 ON DELETE CASCADE
的外键约束。所以你的选择是
- 将构成父项主键的所有列添加到子项。
- 重新设计父表,以便有一个单列主键(可能是合成键)并在子表中使用它。
- 自己编写实现删除的代码。
关于sql - 引用复合主键的一列作为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13753027/