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

给Staff表添加外键触发Error Code:1072错误,请求技术解决

问题分析与解决

操作过程

首先执行以下SQL语句,执行正常:

create table Hotel(
hotelNo integer, 
name varchar(20), 
address varchar(20),
StaffNo integer,     
PRIMARY KEY (hotelNo));

ALTER TABLE Hotel ADD  FOREIGN KEY (staffNo) REFERENCES Staff(staffNo);

随后执行以下SQL,最后一行语句报错:

create table Staff(
staffNo integer primary key,
fName varchar(20),
lName varchar(20), 
gender varchar (10), 
dob date, 
salary decimal,
telNo decimal);

ALTER TABLE Staff ADD  FOREIGN KEY (hotelNo) REFERENCES Hotel(hotelNo);

错误信息

0 243 17:33:14 ALTER TABLE Staff ADD FOREIGN KEY (hotelNo) REFERENCES
Hotel(hotelNo) Error Code: 1072. Key column 'hotelNo' doesn't exist in
table 0.015 sec

错误原因

这是因为Staff表中根本不存在hotelNo字段。创建外键约束的前提是:当前表必须先有一个对应字段,用来关联父表的主键。你提到Room表执行相同操作成功,说明Room表在添加外键前已经提前创建了hotelNo字段,所以能正常执行。

解决方法

方案1:创建Staff表时直接添加字段和外键

如果是刚创建Staff表,直接修改建表语句,同时添加关联字段和外键:

create table Staff(
staffNo integer primary key,
fName varchar(20),
lName varchar(20), 
gender varchar (10), 
dob date, 
salary decimal,
telNo decimal,
hotelNo integer,
FOREIGN KEY (hotelNo) REFERENCES Hotel(hotelNo)
);

方案2:先添加字段再设置外键

如果Staff表已存在(甚至已有数据),分两步执行:

  1. 先给Staff表添加hotelNo字段:
ALTER TABLE Staff ADD COLUMN hotelNo integer;
  1. 再添加外键约束:
ALTER TABLE Staff ADD FOREIGN KEY (hotelNo) REFERENCES Hotel(hotelNo);

注意:如果Staff表已有数据,添加外键前要确保hotelNo字段的所有值要么为NULL,要么在Hotel表的hotelNo中存在,否则会因数据不匹配导致外键创建失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:24:37