为什么我在外键约束上得到MySQL错误1064?
问题描述:
CREATE TABLE EMP_1 (
EMP_NUM varchar(3),
EMP_LNAME varchar(15),
EMP_FNAME varchar(15),
EMP_INITIAL varchar(1),
EMP_HIREDATE datetime,
JOB_CODE varchar(3), FOREIGN KEY (JOB_CODE) REFERENCES JOB
);
这是创建一个表的另一个表的子集的代码。这是一个练习的一部分。为什么我在外键约束上得到MySQL错误1064?
#1064 - 您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“参考JOB)”在第8行
是在phpMyAdmin输出查询运行时错误信息。
第8行的句法在哪里?在检查了w3学校和教科书后,我看不到问题。
答
你在JOB
表中缺少的引用外键列
所以它应该像
FOREIGN KEY (JOB_CODE) REFERENCES JOB(job_code_col)
因此,如果您JOB
表也有一个叫JOB_CODE
列,那么将DDL看起来像这样:
CREATE TABLE EMP_1 (
EMP_NUM varchar(3),
EMP_LNAME varchar(15),
EMP_FNAME varchar(15),
EMP_INITIAL varchar(1),
EMP_HIREDATE datetime,
JOB_CODE varchar(3), FOREIGN KEY (JOB_CODE) REFERENCES JOB (JOB_CODE)
);
我在作业表中有JOB_CODE列。在查询运行之前,是否需要首先在作业表中将其设置为外键?我没有完全关注你。 – mango762
你需要在表名后面的括号内添加该列的名称,查看我添加了'(job_code_col)'的答案,这应该是'JOB'表上的列名称 –
@ mango762,我更新了我的答案显然是因为你说你在JOB表上有一个JOB_CODE列 –