Недавно у нас возникла необходимость добавить столбцы в несколько существующих таблиц базы данных SQLite.Это можно сделать с помощью ALTER TABLE ADD COLUMN
.Конечно, если таблица уже была изменена, мы хотим оставить ее в покое.К сожалению, SQLite не поддерживает предложение IF NOT EXISTS
для ALTER TABLE
.
. Наш текущий обходной путь - выполнить инструкцию ALTER TABLE и игнорировать любые ошибки «повторяющегося имени столбца», как и этого Python.пример (но в C ++).
Тем не менее, наш обычный подход к настройке схем базы данных состоит в том, чтобы иметь скрипт .sql, содержащий операторы CREATE TABLE IF NOT EXISTS
и CREATE INDEX IF NOT EXISTS
, которые могут быть выполнены с использованием sqlite3_exec
или sqlite3
инструмент командной строки.Мы не можем поместить ALTER TABLE
в эти файлы сценариев, потому что если этот оператор завершится неудачно, что-нибудь после того, как оно не будет выполнено.
Я хочу, чтобы определения таблиц находились в одном месте, а не разбивались на .sql и.cpp файлы.Есть ли способ написать обходной путь к ALTER TABLE ADD COLUMN IF NOT EXISTS
в чистом SQLite SQL?