首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未创建MySQL外键

未创建MySQL外键
EN

Stack Overflow用户
提问于 2016-03-28 22:01:51
回答 1查看 975关注 0票数 1

我以为我的表上设置了外键,但尽管DDL中有正确的语法,即使在事后试图添加约束时,也不会发生任何事情。我没有收到任何错误,并收到一条消息:“10行受影响的记录:10重复:0警告:0”

以下是我的表的定义:

代码语言:javascript
复制
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)的索引

我可以随心所欲地多次运行以下命令,而且显然什么也没有发生:

代码语言:javascript
复制
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中的数据库选项卡中看到的内容:

是什么导致了这一切?我需要外键来防止删除,而现在这种情况还没有发生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-28 22:42:06

查看InnoDB文档 for MySQL。虽然MySQL接受外键声明作为有效语法,但目前只有InnoDB引擎实际实现它们。如果它不是您的设置中的缺省值,请将其包含在表选项中-创建TABLE...ENGINE=InnoDB

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36271977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档