创建引用复合主键的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
相关产品推荐
相关产品推荐

