首页 > 解决方案 > SQL 外键错误——FK 约束缺少索引

问题描述

CREATE DATABASE Company; 
USE Company; 

CREATE TABLE Employee(
 EmployeeID INT PRIMARY KEY, 
 EmployeeName CHAR(25), 
 DID INT NOT NULL
 );
 
 CREATE TABLE Department( 
 DepartmentID INT NOT NULL, 
 DpartmentName CHAR(25), 
 FOREIGN KEY (DepartmentID) REFERENCES Employee(DID)
 );

这是一个用于创建 2 个表并添加外键的简单 SQL 查询,

我确定——

  1. 具有相同的数据类型
  2. 表中不同的名称。
  3. 正确的语法。

但是,我仍然得到错误

0   23  16:48:05    CREATE TABLE Department( 
  DepartmentID INT NOT NULL, 
  DpartmentName CHAR(25), 
  FOREIGN KEY (DepartmentID) REFERENCES Employee(DID)
  ) Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'department_ibfk_1' in the referenced table 'employee' 0.329 sec

我该如何纠正?提前致谢

标签: sql

解决方案


引用表 'employee' 中的约束 'department_ibfk_1' 缺少索引

如果要创建引用列的外键,则需要DID在表的列上建立索引。EmployeeEmployee.DID

正如评论中所建议的那样,您可能希望反过来:该Employee.DID列听起来像是对Department.Id.

因此,外键应该在Employee表上,引用Department表。(这样,就不会出现任何Department.id已经编入索引的错误)。


推荐阅读