外键不添加

时间:2016-03-17 04:16:06

标签: sql phpmyadmin

我有一个名为courses的表和一个名为modules的表。

课程表包含courseID,courseName,module1,module2。

modules表有moduleID,moduleName。

我正在尝试使用它来添加外键,但错误显示“无法添加外键约束”:

ALTER TABLE课程 添加外键(module1) REFERENCES模块(moduleName)

我做错了什么?

2 个答案:

答案 0 :(得分:2)

假设modules的主键为moduleID,则应将外键指定为

ALTER TABLE courses ADD FOREIGN KEY (module1) REFERENCES modules(moduleID)

,外键的类型应与modules主键的类型相同。

答案 1 :(得分:1)

发生此错误的可能性

1)两个关键字段的类型和/或大小不完全匹配。

2)您尝试引用的关键字段之一没有索引和/或不是主键。

3)外键名称是已存在键的副本。

4)您已指定级联ON DELETE SET NULL,但相关键字段设置为NOT NULL。您可以通过更改级联或将字段设置为允许NULL值来解决此问题。

5)关系中的一个字段是组合(复合)键的一部分,并且没有它自己的单独索引。即使字段将索引作为组合键的一部分,您也必须仅为该键字段创建单独的索引,以便在约束中使用它。

6)您的ALTER语句中存在语法错误,或者您在关系中输入了一个字段名称。

7)外键的名称超过64个字符的最大长度。

回答您的问题:

使用查询

ALTER TABLE courses ADD FOREIGN KEY (module1) REFERENCES modules(moduleName)

这里你的语法是正确的。请查看指南。

使用GUI

提出fk的表格在:table - >结构 - >关系概述

您需要设置外键的索引键

enter image description here