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:

mesas

Eu quero:

  • em Documentos, addeddeve tornar-se oldadded(para ter um backup)
  • em seguida, substituir toda a coluna addedde Documentspor toda a coluna addedde doc3sept.

Até agora, eu consegui selecionar o addedde doc3septcom SELECT added FROM doc3sept, mas eu estou preso em substituir os valores antigos da addedde Documents.

marlon
fonte

Respostas:

0

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

Primeiro adicione a oldaddedcoluna:

ALTER TABLE Documents ADD COLUMN oldadded int

Para atualizar valores de coluna de outra tabela, você não pode usar UPDATEno SQLite. Você só pode usar o INSERT OR REPLACEcomando.

Então, na próxima corrida:

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

Então corra:

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

Tenha cuidado para ter um backup antes de fazer isso, se algo falhar.

Vojtěch Dohnal
fonte