2013-03-06 49 views
3

我已经创建了教师表第一,其描述是外键语法

mysql> desc teacher; 
    +--------------+-------------+------+-----+---------+-------+ 
    | Field  | Type  | Null | Key | Default | Extra | 
    +--------------+-------------+------+-----+---------+-------+ 
    | TEACHER_ID | varchar(3) | NO | PRI | NULL |  | 
    | TEACHER_NAME | varchar(40) | YES |  | NULL |  | 
    +--------------+-------------+------+-----+---------+-------+ 

我创建了一个新表后如下。我需要的是,下表中我想用TEACHER_ID为外键。我已经写了following.I硝基甲苯知道是否是错误的方法syntactically.But我没有得到任何错误...

mysql> CREATE TABLE SUB_MCA_TY 
-> (SUB_ID VARCHAR(4) PRIMARY KEY, 
-> SUB_NAME VARCHAR(30), 
-> TEACHER_ID VARCHAR(3) REFERENCES TEACHER(TEACHER_ID)); 

回答

10

“内联”外键总是由MySQL简单地忽略,即使InnoDB(欢迎来到wonderfu升的MySQL一致的世界...)

您需要的列后,改变成一个明确的约束:

CREATE TABLE SUB_MCA_TY 
(
    SUB_ID VARCHAR(4) PRIMARY KEY, 
    SUB_NAME VARCHAR(30), 
    TEACHER_ID VARCHAR(3), 
    foreign key (TEACHER_ID) REFERENCES TEACHER(TEACHER_ID) 
); 

Quote from the manual

MySQL不支持或识别“内联参考规范“(在SQL标准中定义),其中参考文件定义为列规范的一部分