как правильно создать внешний ключ? - PullRequest
0 голосов
/ 20 сентября 2019

У меня ниже SQL

mysql-sql> create table Employees (Emp_ID int not null primary key, Emp_Name varchar(20),Hours_LoggedIn int);
Query OK, 0 rows affected (0.09 sec)
mysql-sql> insert into Employees (Emp_ID,Emp_Name,Hours_LoggedIn) values (001,'Dinesh',9);
Query OK, 1 row affected (0.03 sec)
mysql-sql> insert into Employees (Emp_ID,Emp_Name,Hours_LoggedIn) values (002,'Shruthi',8);
Query OK, 1 row affected (0.02 sec)
mysql-sql> insert into Employees (Emp_ID,Emp_Name,Hours_LoggedIn) values (003,'Sukanya',7);
Query OK, 1 row affected (0.00 sec)
mysql-sql> insert into Employees (Emp_ID,Emp_Name,Hours_LoggedIn) values (004,'Varun',6);
Query OK, 1 row affected (0.00 sec)
mysql-sql> insert into Employees (Emp_ID,Emp_Name,Hours_LoggedIn) values (005,'Karthi',5);
Query OK, 1 row affected (0.01 sec)


mysql-sql>  create table Project (Project_ID int not null primary key,Project_Name varchar(20),Project_Manager varchar(20),CostPerHour int,Minimum_LoggedInHours int,foreign key(Minimum_LoggedInHours) references Employees(Hours_LoggedIn));

Получаю ошибку ниже.

ERROR: 1215 (HY000): Cannot add foreign key constraint

Мне нужно использовать Hours_LoggedIn в качестве FK.Может кто-нибудь помочь с правильным кодом?

1 Ответ

1 голос
/ 20 сентября 2019

MySQL требует, чтобы любой столбец, на который ссылается внешний ключ, был проиндексирован.Попробуйте следующее:

ALTER TABLE Employees ADD INDEX hours_logged_in_idx(Hours_LoggedIn);

перед созданием таблицы проекта.Обратите внимание, что поскольку Hours_LoggedIn не обязательно уникален, это может привести к неожиданному поведению.

...