- 此问题在此处已有答案**:
Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'projects_ibfk_1' in the referenced table 'employees'(1个答案)
21小时前关门了。
我有一个错误的约束,这是具体的索引fk_Pedido4,最后一段,这将有助于很多,如果有人可以帮助。
CREATE TABLE Cliente (
CPF real PRIMARY KEY,
Nome Varchar (55),
Endereco VARCHAR (55),
Contato real
);
CREATE TABLE Funcionarios (
Registro INT PRIMARY KEY,
Carteira_Trabalho REAL,
Nome varchar(55),
Contato REAL,
CNH REAL,
Tipo_Funcionario INT
);
CREATE TABLE Pizza (
Codigo INT PRIMARY KEY,
Sabores CHAR,
Ingredientes CHAR
);
CREATE TABLE Pedido (
Numero INT,
Observacoes VARCHAR(55),
Cliente real,
Data DATE,
Hora TIME,
Pizza INT,
Codigo_Cozinheiro INT,
Codigo_Atendente INT,
Codigo_Entregador INT,
PRIMARY KEY (Numero, Data)
);
ALTER TABLE Pedido ADD CONSTRAINT FK_Pedido_2
FOREIGN KEY (Cliente)
REFERENCES Cliente (CPF)
ON DELETE RESTRICT;
ALTER TABLE Pedido ADD CONSTRAINT FK_Pedido_3
FOREIGN KEY (Pizza)
REFERENCES Pizza (Codigo)
ON DELETE RESTRICT;
<sub>ALTER TABLE Pedido ADD CONSTRAINT FK_Pedido_4
FOREIGN KEY (Codigo_Cozinheiro, Codigo_Atendente, Codigo_Entregador)
REFERENCES Funcionarios (Registro, Registro, Registro)
ON DELETE CASCADE;</sub>
我只是期待一个语法错误,我没有看到,由于缺乏经验,在这种语言...
1条答案
按热度按时间j8ag8udp1#
外键表示父表中必须正好有一行具有给定的键。
这里您说父表Funcionarios必须有一行的键(注册,注册,注册)匹配Pedido(Codigo_Cozinheiro,Codigo_Atendente,Codigo_Entregador)。首先,没有密钥(Registro,Registro,Registro)在Funcionarios中。关键是单列即使我们创建这样的密钥,也不会有Registro匹配Codigo_Cozinheiro、Codigo_Atendente、和Codigo_Entregador同时出现。
您希望每个codigo都有一个外键,因此Codigo_Cozinheiro必须在Funcionarios中有一个匹配项,Codigo_Atendente必须在Funcionarios中有一个匹配项,Codigo_Entregador必须在Funcionarios中有一个匹配项。