mysql - 怎么了。当我调用外键时

标签 mysql

Create table APPLICANT
(
Applicant_ID varchar(10) NOT NULL,
Applicant_Name nvarchar (25) NOT NULL,
Father_Name nvarchar (25),
Gender nvarchar (15),
Applicant_DOB datetime,
Qualifaction nvarchar (45),
Application_Id varchar (15),
PRIMARY KEY (Applicant_ID, Applicant_Name)

 );

 create table APPLICATION
(
Application_ID varchar (10),
Application_Name nvarchar(25),
Applicant_ID varchar (10),
Applicant_Name nvarchar (25),
primary key (Application_ID) 
);


Create table CELL_NUMBER
(
Cell_No varchar (15) NOT NULL ,
Applicant_ID varchar (10),
Applicant_Name nvarchar (25),
Primary Key (Cell_No)

);


Alter table CELL_NUMBER
add constraint fk_applicant_id foreign key (Applicant_ID) references APPLICANT (Applicant_ID);

Alter table CELL_NUMBER
ADD CONSTRAINT fk_applicant_name foreign key (Applicant_Name) references APPLICANT (Applicant_Name);
<小时/>

显示此错误

Msg 1776, Level 16, State 0, Line 34
There are no primary or candidate keys in the referenced table 'APPLICANT' that match the referencing column list in the foreign key 'fk_applicant_id'.
Msg 1750, Level 16, State 0, Line 34
Could not create constraint. See previous errors.

最佳答案

您无法创建仅引用主键对中的一列的外键。

Alter table CELL_NUMBER ADD CONSTRAINT fk_applicant 
  foreign key (Applicant_ID, Applicant_Name) references 
  APPLICANT (Applicant_ID, Applicant_Name)

这是因为您的外键需要标识 APPLICANT 表中的一行,并且由于您的主键引用了两列,因此您不能只使用一列来生成外键。

编辑:您只能引用复合主键的一列,贾斯汀已更正

关于mysql - 怎么了。当我调用外键时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21590355/

相关文章:

php - sql查询在两个表之间选择并更新这两个表之间的数据

mysql - 从自定义到 WordPress 数据库的特色图像

mysql - 检索 session 数据 Codeigniter

mysql - 每次我尝试执行下面的代码时,它都会显示错误 "Incorrect syntax near ' B'。”

c# - 通过使用准备语句在 C# 中查询 Utf-8

MySQL - 自动递增 10

php - 如何使用 php 在 MySQL 数据库中插入 θ、α、Γ、Δ 等符号?

mysql - 无法连接到 LAMP docker 容器中的 MYSQL

java - 以下查询导致 MySQLSyntaxErrorException - 我的查询有什么问题?

java - 关闭连接后没有操作,绕过我对关闭连接的检查?