Como faço para adicionar uma coluna em uma tabela 2 banco de dados SQLite
-
11-09-2019 - |
Pergunta
Como posso adicionar uma coluna adicional a uma tabela de banco de dados SQLite 2 existente que têm dados e índices associados.
Parece que o SQL ALTER TABLE para que não está disponível em sqlite2?
Solução
A partir da SQLite FAQ :
SQLite tem limitado o apoio ALTER TABLE que você pode usar para adicionar uma coluna para o fim de uma tabela ou para mudar o nome de uma tabela. Se você quiser fazer alterações mais complexas na estrutura de uma tabela, você terá de recriar a tabela. Você pode salvar os dados existentes para uma tabela temporária, gota a tabela antiga, criar a nova tabela, em seguida, copiar o de volta dados da tabela temporária.
Por exemplo, suponha que você tenha uma tabela chamada "T1" com nomes de colunas "a", "b" e "c" e que você deseja excluir coluna "c" a partir desta tabela. Os seguintes passos ilustram como isso poderia ser feito:
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
Outras dicas
Pode não ser - sqlite3 foi para fora por um tempo. Você vai ter que criar outra DB com a tabela da maneira que você quiser e copiar os dados para ele. Ou, criar uma nova tabela, copiar os dados, deixe cair o original e substituir por um novo.
Não se esqueça que TABELA gota gotas também associada gatilhos.
Antes que você vai modificar a tabela use o comando
.scheme TABLE_TO_MODIFY
que vai despejar todas as declarações atuais que serão descartados incluindo os gatilhos que você precisa re-criar.
Cheers,
Elixon
Você não. modificação não trivial de tabelas não é suportado. O que você precisa fazer é:
- copiar os dados para uma tabela temporária largar o velho
- criar a nova tabela
- Copiar dados de sua tabela original para ele
- Criar a nova tabela
- Copiar os dados de temperatura para a nova tabela