Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Erro na tabela categoria

CREATE TABLE tabelaprodutos (
ID_Produto INT PRIMARY KEY,
Nome_Produto VARCHAR (250),
Descricao_Produto TEXT,
Categoria_produto INT,
Preco_De_Compra DECIMAL (10,2),
Unidade VARCHAR (50),
Fornecedor INT,
Data_De_Inclusao DATE,
FOREIGN KEY (Categoria) REFERENCES tabelacategorias (ID_Categoria),
FOREIGN KEY (Fornecedor) REFERENCES tabelafornecedores (id)
);

DataBase: sqlite
Error: SQLITE_ERROR: sqlite3 result code 1: unknown column "Categoria" in foreign key definition
Response language pt

1 resposta

Oi, Vinicius, como vai?

O erro está no nome da coluna utilizada na definição da chave estrangeira. Na criação da tabela, você declarou a coluna como Categoria_produto, mas na hora de criar a FOREIGN KEY está usando Categoria. Como essa coluna Categoria não existe em tabelaprodutos, o SQLite retorna unknown column "Categoria" in foreign key definition.

Nesse caso, basta manter o mesmo nome utilizado na declaração da coluna. O trecho deve ficar assim:

FOREIGN KEY (Categoria_produto) REFERENCES tabelacategorias (ID_Categoria),
FOREIGN KEY (Fornecedor) REFERENCES tabelafornecedores (id)

Então, o comando completo seria:

CREATE TABLE tabelaprodutos (
    ID_Produto INT PRIMARY KEY,
    Nome_Produto VARCHAR(250),
    Descricao_Produto TEXT,
    Categoria_produto INT,
    Preco_De_Compra DECIMAL(10,2),
    Unidade VARCHAR(50),
    Fornecedor INT,
    Data_De_Inclusao DATE,
    FOREIGN KEY (Categoria_produto) REFERENCES tabelacategorias (ID_Categoria),
    FOREIGN KEY (Fornecedor) REFERENCES tabelafornecedores (id)
);

Uma boa prática ao trabalhar com SQL é conferir se os nomes utilizados nas restrições, consultas e relacionamentos são exatamente os mesmos definidos na criação das tabelas. No seu código, o relacionamento com Fornecedor está seguindo essa lógica, enquanto Categoria_produto acabou sendo referenciada com outro nome.

Bons estudos, Vinicius. Qualquer dúvida, o fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!