You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建引用复合主键的Foreign Key失败,求助排查解决

问题分析与解决方法

错误原因

ORA-02256错误的核心是外键引用的列数与被引用的复合主键列数不匹配。主表CLEPRIMAIRE的主键是由aa和bb两列组成的复合主键,但你在子表CLEPETRANGERE中仅用单字段ff尝试关联这个复合主键,违反了外键的基本规则——复合主键对应的外键必须使用相同数量的字段进行关联。

修正后的SQL代码

CREATE TABLE CLEPRIMAIRE
(
    aa INT,
    bb INT,
    
    CONSTRAINT PK_AA_BB PRIMARY KEY (aa,bb)
);

CREATE TABLE CLEPETRANGERE
(
    ee INT,
    fk_aa INT, -- 对应主表的aa列
    fk_bb INT, -- 对应主表的bb列
    
    CONSTRAINT PK_EE PRIMARY KEY (ee),
    CONSTRAINT FK_AA_BB FOREIGN KEY (fk_aa, fk_bb) REFERENCES CLEPRIMAIRE(aa, bb)
);

关键说明

  • 子表必须新增与复合主键列数一致的字段,分别对应主表的aa和bb列(字段名可自定义,比如示例中的fk_aa、fk_bb)
  • 外键约束需同时引用这两个字段,且字段顺序要与主表复合主键的定义顺序保持一致
  • 复合主键无法被部分引用,必须整体关联,因此不能仅用单个字段关联复合主键的某一列

内容的提问来源于stack exchange,提问作者Psykoxen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:35:24