1
resposta

Linha de código não funciona

No tópico "Relacionando tabelas por meio de chaves estrangeiras", tentei rodar o código que considerei correto (resposta aprovada):

1- Criei a tabela "produtos":

CREATE TABLE produtos (
  id INT PRIMARY KEY,
  nome varchar (250),
  descricao text,
  categoria INT,
  preco decimal (10,2),
  unidade varchar (50),
  fornecedor INT,
  data_inclusao date
  );
  

Funcionou sem problema.

Na hora de alterar, inseri em outra aba:

alter table produtos 
add FOREIGN key (fornecedor) REFERENCES tabelafornecedores(id);

Usei o ID da "tabelafornecedores" apenas para fins de exercício. Deu erro de sintaxe:

Help: near "FOREIGN": syntax error

Qual seria o erro de sintaxe?

1 resposta

Olá James, tudo bem com você?

Havia um equívoco no exercício. Em SQLite, a sintaxe para adicionar uma chave estrangeira a uma tabela já existente consiste em adicionar uma nova coluna na tabela que será a chave estrangeira.

Ou seja, para relacionar a tabela produtos com a tabela fornecedores, devemos adicionar uma nova coluna à tabela produtos que será a chave estrangeira, referenciando o campo id na tabela fornecedores.

Exemplo:

ALTER TABLE produtos 
ADD COLUMN fk_fornecedor INTEGER 
REFERENCES tabelafornecedores(id);

Nesta instrução:

  • ALTER TABLE produtos informa que queremos alterar a estrutura da tabela produtos.
  • ADD COLUMN fk_fornecedor adiciona uma nova coluna chamada fk_fornecedor à tabela produtos. Este será o campo que armazenará a chave estrangeira.
  • INTEGER especifica o tipo de dados da nova coluna.
  • REFERENCES tabelafornecedores(id) indica que a nova coluna fk_fornecedor na tabela produtos é uma chave estrangeira que faz referência ao campo id na tabela fornecedores.

Para verificar se a chave estrangeira foi criada corretamente, use a sintaxe a seguir. que irá listar todas as restrições de chave estrangeira na tabela produtos:

PRAGMA foreign_key_list(produtos);

O exercício do curso foi corrigido.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!