我先创建了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));
答案 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)
);
MySQL无法识别或支持“内联参考规范”(如SQL标准中所定义),其中引用被定义为列规范的一部分