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