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

如何在Wedstrijd表上创建Speler与Wedstrijd的外键约束?解决两表均加键问题

正确实现Speler与Wedstrijd表的外键约束(外键位于Wedstrijd表)

你刚才的操作完全搞反了外键的关系方向,咱们一步步来纠正:

先理清核心逻辑

外键约束的本质是:包含外键的子表字段,必须引用父表的主键。你的需求是外键放在Wedstrijd表,所以Wedstrijd是子表,需要用它的某个字段关联Speler表的主键idSpeler。

第一步:清理错误的外键(如果还存在)

你之前执行的语句把外键加在了Speler表,这完全不符合需求,先把它删掉:

  1. 先查询Speler表上错误外键的名称(以MySQL为例):
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Speler' AND REFERENCED_TABLE_NAME = 'Wedstrijd';
  1. 用查询到的约束名删除外键:
ALTER TABLE Speler DROP FOREIGN KEY 你的约束名;

第二步:添加正确的外键约束

情况1:Wedstrijd表还没有关联字段

如果Wedstrijd表中没有用来存储Speler ID的字段,先添加这个字段(注意字段类型要和Speler表的idSpeler完全一致,比如INT、VARCHAR(20)等):

ALTER TABLE Wedstrijd ADD COLUMN idSpeler INT; -- 替换成和idSpeler匹配的类型

情况2:正式添加外键约束

现在给Wedstrijd表的idSpeler字段添加外键,关联到Speler表的主键:

ALTER TABLE Wedstrijd
ADD FOREIGN KEY (idSpeler)
REFERENCES Speler(idSpeler);

这样操作后,外键就正确建立在Wedstrijd表了,它会确保Wedstrijd表中的idSpeler值必须是Speler表中已存在的idSpeler值,实现数据的一致性约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:32:42