2016-04-26 78 views
-1
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学校和教科书后,我看不到问题。

回答

3

你在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) 
); 
+0

我在作业表中有JOB_CODE列。在查询运行之前,是否需要首先在作业表中将其设置为外键?我没有完全关注你。 – mango762

+1

你需要在表名后面的括号内添加该列的名称,查看我添加了'(job_code_col)'的答案,这应该是'JOB'表上的列名称 –

+0

@ mango762,我更新了我的答案显然是因为你说你在JOB表上有一个JOB_CODE列 –