外键语法

时间:2013-03-06 14:19:20

标签: mysql database database-design

我先创建了Teacher表,其描述是

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

在我创建了一个新表之后。我需要的是在下表中我想使用TEACHER_ID作为外键。我写了以下内容。我知道它是否错误意味着语法。但我没有得到任何错误......

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

1 个答案:

答案 0 :(得分:12)

"串联"即使使用InnoDB,MySQL也会默默地忽略外键始终(欢迎使用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标准中所定义),其中引用被定义为列规范的一部分