sqlite 如何解决外键不匹配错误?

vbopmzt1  于 2022-11-14  发布在  SQLite
关注(0)|答案(1)|浏览(174)

我尝试在‘JobTypes’表中插入值,但一直收到外键不匹配错误。我想我的外键弄错了,但我不太清楚具体在哪里,因为我在这方面还是个新手,有人能帮我吗?
这就是我到目前为止所拥有的:

CREATE TABLE Projects ( 
Proj_ID INTEGER, 
Proj_name TEXT, 
PRIMARY KEY (Proj_ID)
);

CREATE TABLE Employees ( 
Emp_ID INTEGER,
Proj_ID INTEGER,
Emp_fname TEXT,
PRIMARY KEY(Emp_ID, Proj_ID),
FOREIGN KEY(Proj_ID) REFERENCES Projects(Proj_ID)
);

CREATE TABLE HourRates ( 
Job_type TEXT,
Hour_rate TEXT,
PRIMARY KEY(Job_type)
);

CREATE TABLE JobTypes ( 
Emp_ID INTEGER,
Job_type TEXT,
PRIMARY KEY(Emp_ID)
FOREIGN KEY (Emp_ID) REFERENCES Employees(Emp_ID)
FOREIGN KEY (Job_type) REFERENCES HourRates(Job_type)
);
bakd9h0s

bakd9h0s1#

每个FKEY目标必须是主键或定义了显式唯一索引。Employees(Emp_ID)没有唯一约束或索引。如果该列是唯一的,则需要添加唯一约束或定义简单的PKEY。否则,您将无法向JobTypes表中插入任何数据。生成的错误消息令人困惑,当您创建JobTypes表时,SQLite至少应该发出某种警告,但这不是它的工作方式,可能是因为需要向后兼容。无论如何,我猜测您的Employees表实际上需要拆分成Employees和Employees_Projects(多对多)表。

相关问题