我先创建了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)
);
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/