Как добавить столбец в таблицу базы данных sqlite 2?

StackOverflow https://stackoverflow.com/questions/1098172

  •  11-09-2019
  •  | 
  •  

Вопрос

Как добавить дополнительный столбец в существующую таблицу базы данных sqlite 2, с которой связаны данные и индексы.

Кажется, что SQL-таблица изменения для этого недоступна в sqlite2?

Это было полезно?

Решение

Из Часто задаваемые вопросы по SqLite:

SQLite имеет ограниченную поддержку ALTER TABLE, которую вы можете использовать для добавления столбца в конец таблицы или для изменения имени таблицы.Если вы хотите внести более сложные изменения в структуру таблицы, вам придется создать таблицу заново.Вы можете сохранить существующие данные во временную таблицу, удалить старую таблицу, создать новую таблицу, а затем скопировать данные обратно из временной таблицы.

Например, предположим, что у вас есть таблица с именем «t1» с именами столбцов «a», «b» и «c», и вы хотите удалить столбец «c» из этой таблицы.Следующие шаги иллюстрируют, как это можно сделать:

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;

Другие советы

Возможно, это не так — sqlite3 уже давно отсутствует.Вам придется создать еще одну БД с таблицей так, как вы хотите, и скопировать в нее данные.Или создайте новую таблицу, скопируйте данные, удалите оригинал и замените его новым.

Не забывайте, что DROP TABLE удаляет также связанные TRIGGER.

Прежде чем вы собираетесь изменить таблицу, используйте команду

.scheme TABLE_TO_MODIFY

это приведет к сбросу всех текущих операторов, которые будут удалены, включая ТРИГГЕРЫ, которые вам нужно создать заново.

Ваше здоровье,

Эликсон

Вы не знаете.Нетривиальное изменение таблиц не поддерживается.Что вам нужно сделать, это:

  1. Скопируйте данные во временную таблицу, удалите старую
  2. создать новую таблицу
  3. Скопируйте в нее данные из исходной таблицы
  4. Создайте новую таблицу
  5. Скопируйте данные из temp в новую таблицу
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top