mysql - 外键语法

标签 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));

最佳答案

“内联”外键总是被 MySQL 默默地忽略,即使是 InnoDB(欢迎来到 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 does not recognize or support “inline REFERENCES specifications” (as defined in the SQL standard) where the references are defined as part of the column specification

关于mysql - 外键语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15249730/

相关文章:

sql - 如何计算最后一个值与X前的值之间的百分比?

PHP 查询结果存入变量

mysql - 使用两个不同的数据库来复制数据并根据适合每个数据库的数据以最高效的方式提供读取服务

php - Laravel 原始查询不返回结果

javascript - 页面在 ajax 中重新加载

php - 显示创建表

database-design - 数据库架构设计 - 如何针对实体存储特定的应用程序设置

c# - MySql和 Entity Framework 导致 "Object reference not set to an instance of an object."

php - 使用数据库中同一表中的另一列(ID 号)更改上传文件的名称

database-design - 太分表还是不分表?这就是问题