Veja o que a Luri menciona:
No contexto do SQLite, a sintaxe ALTER TABLE ... ADD COLUMN ... REFERENCES é válida e funciona para adicionar uma coluna que é uma chave estrangeira.
No entanto, a prática mais comum e recomendada para adicionar uma chave estrangeira a uma tabela existente no SQLite, especialmente se você quiser que ela seja uma restrição de chave estrangeira (que o SQLite vai validar), é um pouco diferente da que foi apresentada na resposta.
A sintaxe que você viu adiciona a coluna e a referência, mas o SQLite tem algumas limitações com ALTER TABLE para adicionar restrições de chave estrangeira diretamente a colunas existentes ou para adicionar novas colunas com restrições de chave estrangeira que apontam para tabelas que ainda não existem ou que não foram configuradas para aceitar chaves estrangeiras.
Para o SQLite, a forma mais robusta de adicionar uma chave estrangeira a uma tabela existente, garantindo que a restrição seja aplicada e validada, geralmente envolve:
- Criar uma nova tabela com a estrutura desejada, incluindo a chave estrangeira.
- Copiar os dados da tabela antiga para a nova.
- Excluir a tabela antiga.
- Renomear a nova tabela para o nome da tabela antiga.
Isso é um processo mais complexo, mas garante que todas as restrições, incluindo as de chave estrangeira, sejam aplicadas corretamente desde o início.