我有一个名为courses的表和一个名为modules的表。
课程表包含courseID,courseName,module1,module2。
modules表有moduleID,moduleName。
我正在尝试使用它来添加外键,但错误显示“无法添加外键约束”:
ALTER TABLE课程 添加外键(module1) REFERENCES模块(moduleName)
我做错了什么?
答案 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 - >结构 - >关系概述
您需要设置外键的索引键