manipulação básica de tabelas sqlite

0

Eu tenho duas tabelas no meu .sqlite. Essas duas tabelas são quase idênticas em termos de estrutura / conteúdo e eu quero que uma coluna da primeira tabela seja substituída por uma coluna da segunda tabela.

Isso é o que eu tenho:

tabelas

Eu quero:

  • em Documentos, added deve se tornar oldadded (para fazer backup)
  • substitua a coluna inteira added de Documents pela coluna inteira added de doc3sept .

Até agora, consegui selecionar o added de doc3sept com SELECT added FROM doc3sept , mas estou preso ao substituir os valores antigos de added de Documents .

    
por marlon 13.01.2016 / 08:05

1 resposta

0

Não há suporte para renomear colunas no SQLite - veja aqui.

Primeiro adicione a coluna oldadded :

ALTER TABLE Documents ADD COLUMN oldadded int

Para atualizar valores de coluna de outra tabela, você não pode usar UPDATE no SQLite. Você só pode usar o comando INSERT OR REPLACE .

Próxima corrida:

REPLACE INTO Documents  (id, oldadded)
SELECT id, added FROM Documents
ON CONFLICT REPLACE

Em seguida, execute:

REPLACE INTO Documents  (id, added)
SELECT id, added FROM doc3sept 
WHERE EXISTS (SELECT * FROM Documents WHERE doc3sept.id=Documents.id)
ON CONFLICT REPLACE

Tenha o cuidado de fazer um backup antes de fazer isso se algo falhar.

    
por 13.01.2016 / 11:36