sql - 引用复合主键的一列作为外键

标签 sql oracle foreign-keys

表 A 中,我有 3 个字段的组合作为 主键,在 表 B 中我有得到了其中一个复合 Material (这不是唯一的)。我想引用 table A 以简化 delete(使用 ON DELETE CASCADE)。

那么,我是否必须将其他两个字段放在表 B 中并使用此 composite 进行引用,还是有其他解决方案?

最佳答案

如果要在两个表之间创建外键约束,则子表必须具有构成父表主键约束的所有列(这是我不鼓励使用的原因之一复合主键)。如果您希望 Oracle 在删除父行时自动删除子行,则需要使用 ON DELETE CASCADE 的外键约束。所以你的选择是

  • 将构成父项主键的所有列添加到子项。
  • 重新设计父表,以便有一个单列主键(可能是合成键)并在子表中使用它。
  • 自己编写实现删除的代码。

关于sql - 引用复合主键的一列作为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13753027/

相关文章:

php - 多行的内部连接

sql - oracle 9i 中还有另一个 wm_concat 命令吗?

java - 生成ansi sql INSERT INTO

oracle - PL/SQL中如何查看变量的类型?

MySQL "ERROR 1005 (HY000): Can' t 创建表 'foo.#sql-12c_4' (errno : 150)"

sql - (或 SLV 未定义)Informix 数据库

php - 关系表数据库

php - Mysql 向此查询添加 AND 子句

python - 如何避免在 Django 模型上创建外键?

Django 模型 : how to overcome 'through' ManyToMany option limitation