основные манипуляции с таблицами sqlite

267
marlon

У меня есть две таблицы в моем .sqlite. Эти две таблицы почти идентичны по структуре / содержанию, и я хочу, чтобы один столбец первой таблицы был заменен одним столбцом второй таблицы.

Вот что у меня есть:

таблицы

Я хочу:

  • в документах, addedдолжен стать oldadded(иметь резервную копию)
  • затем заменить весь столбец addedиз Documentsпо всей колонне addedиз doc3sept.

До сих пор мне удалось выбрать addedиз doc3septс SELECT added FROM doc3sept, но я застрял в замене старых значений addedиз Documents.

0

1 ответ на вопрос

0
Vojtěch Dohnal

Переименование столбцов в SQLite не поддерживается - см. Здесь.

Сначала добавьте oldaddedстолбец:

ALTER TABLE Documents ADD COLUMN oldadded int 

Для обновления значений столбцов из другой таблицы вы не можете использовать UPDATEв SQLite. Вы можете использовать только INSERT OR REPLACEкоманду.

Итак, следующий запуск:

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

Затем запустите:

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

Будьте осторожны, чтобы сделать резервную копию, прежде чем делать это, если что-то не получается.