#sql #database #sqlite #sql-insert
#sql #База данных #sqlite #sql-вставка
Вопрос:
У меня есть две базы данных SQLite, которые я хотел бы объединить. Я делаю это с помощью следующих команд:
ATTACH "c:other.db" AS SecondaryDB
INSERT INTO MyTable SELECT * FROM SecondaryDB.MyTable
Проблема в том, что MyTable
имеет первичный столбец id
, который автоматически увеличивается в обеих базах данных. Таким образом, возникает конфликт первичного ключа.
Как я могу вставить строки из вторичной базы данных таким образом, чтобы для id
столбца использовалось автоматическое увеличение, начиная с последнего значения первой базы данных?
Ответ №1:
Вы хотите скопировать все строки из источника, но без автоматически увеличиваемого столбца.
Просто перечислите столбцы в предложениях insert
и select
— все, ожидаемый столбец первичного ключа. SQLite автоматически присвоит новые значения автоматически увеличиваемому столбцу.
Скажите, что столбцы вашей таблицы id, col1, col2, col3
, вы бы сделали:
ATTACH "c:other.db" AS SecondaryDB
INSERT INTO MyTable(col1, col2, col3)
SELECT col1, col2, col3 FROM SecondaryDB.MyTable