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

无法在MySQL中创建表:复合外键引用问题求助

问题原因与修复方案

失败原因

  • proj__rooms的主键是联合主键(name, floor, room),单独的floor、room、name字段都没有唯一约束,无法作为外键的引用目标——数据库要求外键必须指向能唯一标识单条记录的字段(主键或唯一索引)。
  • 你错误地将三个字段分别设置为独立外键,而不是用联合外键关联目标表的联合主键。

修复后的SQL语句

CREATE TABLE proj__exames(
    floor NUMERIC(2), 
    room NUMERIC(3), 
    name VARCHAR(40), 
    PRIMARY KEY (floor, room, name),
    -- 用联合外键关联proj__rooms的联合主键,注意顺序要和目标主键一致
    FOREIGN KEY (name, floor, room) REFERENCES proj__rooms (name, floor, room) ON DELETE CASCADE
);

补充说明

如果确实需要单独的外键约束(不推荐,会破坏数据一致性),你需要在proj__rooms的单个字段上添加唯一约束,但这不符合你的表设计逻辑——因为floor、room、name是联合唯一的,单独字段本身可能重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:15:21