我以为我的表上设置了外键,但尽管DDL中有正确的语法,即使在事后试图添加约束时,也不会发生任何事情。我没有收到任何错误,并收到一条消息:“10行受影响的记录:10重复:0警告:0”
以下是我的表的定义:
CREATE TABLE USERS_COURSES (
USERS_COURSES_ID INT NOT NULL AUTO_INCREMENT,
USER_ID INT NOT NULL,
COURSE_ID INT NOT NULL,
ROLE INT NOT NULL,
CONSTRAINT PK_USERS_COURSES PRIMARY KEY (USERS_COURSES_ID),
CONSTRAINT U_USERS_COURSES UNIQUE (USER_ID, COURSE_ID),
CONSTRAINT FK_USERS_COURSES_USERS FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID),
CONSTRAINT FK_USERS_COURSES_COURSES FOREIGN KEY (COURSE_ID) REFERENCES COURSES (COURSE_ID)
);当我查看MySQL工作台中的表时,通过IntelliJ IDEA,我只看到一个名为FK_USERS_COURSES_COURSES (COURSE_ID)的索引
我可以随心所欲地多次运行以下命令,而且显然什么也没有发生:
ALTER TABLE USERS_COURSES ADD CONSTRAINT FK_USERS_COURSES_USERS FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID);
ALTER TABLE USERS_COURSES ADD CONSTRAINT FK_USERS_COURSES_COURSES FOREIGN KEY (COURSE_ID) REFERENCES COURSES (COURSE_ID);下面是我在IntelliJ中的数据库选项卡中看到的内容:

是什么导致了这一切?我需要外键来防止删除,而现在这种情况还没有发生。
发布于 2016-03-28 22:42:06
查看InnoDB文档 for MySQL。虽然MySQL接受外键声明作为有效语法,但目前只有InnoDB引擎实际实现它们。如果它不是您的设置中的缺省值,请将其包含在表选项中-创建TABLE...ENGINE=InnoDB
https://stackoverflow.com/questions/36271977
复制相似问题