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?

Foi útil?

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 é:

  1. copiar os dados para uma tabela temporária largar o velho
  2. criar a nova tabela
  3. Copiar dados de sua tabela original para ele
  4. Criar a nova tabela
  5. Copiar os dados de temperatura para a nova tabela
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top