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

Oracle中多个字段引用同一表主键的外键约束创建问题

Oracle多字段关联同表主键的外键约束规则

结论:Oracle和SQLite规则一致,必须为每个引用字段单独创建外键约束,不能合并为一个复合外键声明。

错误原因说明

你之前的两种失败写法本质都是声明了复合外键:

  • 复合外键的设计逻辑是子表的N个外键字段,需要联合匹配父表的N个联合主键/联合唯一键字段,字段数量、数据类型、顺序必须完全对应
  • 你的USER表主键只有USER_ID1个字段,无法匹配子表3个字段的复合外键要求,因此两种写法都会触发语法报错
  • 额外注意:你之前的写法中EXAMPLE表的主键约束名用了USER_PK,和USER表的主键约束重名,Oracle不允许同库下约束名重复,需要修改

正确建表示例

-- 注意:USER是Oracle内置关键字,建议表名改为USER_INFO避免冲突,若坚持用USER需要加双引号包裹
CREATE TABLE EXAMPLE (
    EXAMPLE_ID INTEGER GENERATED BY DEFAULT AS IDENTITY,
    LEAD_USER INTEGER NOT NULL,
    DELIVERY_USER INTEGER NOT NULL,
    SUPPORT_USER INTEGER NOT NULL,
    CONSTRAINT EXAMPLE_PK PRIMARY KEY (EXAMPLE_ID),
    -- 三个字段分别声明独立外键
    CONSTRAINT FK_LEAD_USER FOREIGN KEY (LEAD_USER) REFERENCES USER(USER_ID),
    CONSTRAINT FK_DELIVERY_USER FOREIGN KEY (DELIVERY_USER) REFERENCES USER(USER_ID),
    CONSTRAINT FK_SUPPORT_USER FOREIGN KEY (SUPPORT_USER) REFERENCES USER(USER_ID)
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:09:00