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

如何解决外键不匹配错误?插入JobTypes表时遇报错求助

外键不匹配错误排查&修复

核心问题1:外键引用不匹配复合主键

你的Employees表主键是复合主键(Emp_ID, Proj_ID),这意味着单独的Emp_ID在Employees表中不是唯一标识(同一个员工可以关联多个项目)。但JobTypes表的外键只引用了Employees(Emp_ID),数据库无法确认这个Emp_ID对应的完整主键记录,必然触发外键不匹配错误。

核心问题2:表创建语句语法错误

JobTypes的创建语句里,每个约束定义后缺少分号,会导致语法解析失败,可能间接引发外键约束异常。


修正后的表创建语句

CREATE TABLE Projects ( 
    Proj_ID INTEGER, 
    Proj_name TEXT, 
    PRIMARY KEY (Proj_ID)
);

CREATE TABLE Employees ( 
    Emp_ID INTEGER,
    Proj_ID INTEGER,
    Emp_fname TEXT,
    PRIMARY KEY(Emp_ID, Proj_ID),
    FOREIGN KEY(Proj_ID) REFERENCES Projects(Proj_ID)
);

CREATE TABLE HourRates ( 
    Job_type TEXT,
    Hour_rate TEXT,
    PRIMARY KEY(Job_type)
);

CREATE TABLE JobTypes ( 
    Emp_ID INTEGER,
    Proj_ID INTEGER, -- 新增Proj_ID字段,匹配Employees的复合主键
    Job_type TEXT,
    PRIMARY KEY(Emp_ID),
    FOREIGN KEY (Emp_ID, Proj_ID) REFERENCES Employees(Emp_ID, Proj_ID), -- 引用完整复合主键
    FOREIGN KEY (Job_type) REFERENCES HourRates(Job_type)
);

插入数据的注意事项

  1. 必须按依赖顺序插入数据:先插Projects,再插Employees(确保Proj_ID存在),接着插HourRates,最后插JobTypes
  2. 插入JobTypes时,Emp_ID和Proj_ID的组合必须在Employees表中存在;Job_type必须在HourRates表中存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:50:32