【问题标题】:SQL Foreign key to a table with a composite primary key具有复合主键的表的 SQL 外键
【发布时间】:2013-04-30 09:08:35
【问题描述】:

我将 derby db 与 NetBeans 一起使用,但我的表遇到了一些问题:

我有 TABLE_ATABLE_B,我这样创建它们:

CREATE TABLE TABLE_A
                (
                FIELD_1 varchar(20),
                FIELD_2 varchar(50),
                FIELD_3 varchar(2),
                PRIMARY KEY(FIELD_1,FIELD_2),
                )

CREATE TABLE TABLE_B
                (
                FIELD_1 varchar(20),
                FIELD_2 varchar(50),
                FIELD_3 varchar(20),
                FIELD_4 varchar(25),
                PRIMARY KEY(FIELD_3),
                FOREIGN KEY(???) REFERENCES regioni(FIELD_1,FIELD_2)
                )

问题是:当TABLE_A 有一个2 字段主键时,如何将TABLE_B 记录链接到另一个TABLE_A 记录?我必须放什么而不是“???”?

谢谢!!!

【问题讨论】:

  • 为此设置一个代理键可能是个好主意
  • 如果您的主键由两列组成,那么所有引用它的外键必须也使用所有这些列。
  • 不应该是REFERENCES regioni (...)REFERENCES TABLE_A (...) 吗?

标签: sql key


【解决方案1】:

只需使用与父 PK 匹配的所有子列

 ...
 FOREIGN KEY(FIELD_1,FIELD_2) REFERENCES regioni(FIELD_1,FIELD_2)
 ...

【讨论】:

    【解决方案2】:

    试试这个,

    CONSTRAINT fk_tbl FOREIGN KEY (FIELD_1,FIELD_2) 
                      REFERENCES regioni(FIELD_1,FIELD_2)
    

    超出了问题的范围,但可能会提供一些信息,说明为什么命名约束很重要

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2011-04-01
      相关资源
      最近更新 更多