ALTER TABLE ADD COLUMN IF NOT EXISTS в SQLite

По моему мнению, проблема в том, что вы можете лениво загружать более одного модуля по одним и тем же маршрутам в одном и том же файле маршрутизации. Я также столкнулся с подобной проблемой и изменил название одного из маршрутов

76
задан Community 23 May 2017 в 11:55
поделиться

2 ответа

Можно альтернативно использовать оператор CASE - WHEN TSQL в сочетании с pragma_table_info, чтобы знать, существует ли столбец:

select case(CNT) 
    WHEN 0 then printf('not found')
    WHEN 1 then printf('found')
    END
FROM (SELECT COUNT(*) AS CNT FROM pragma_table_info('myTableName') WHERE name='columnToCheck') 
0
ответ дан 24 November 2019 в 11:18
поделиться

У меня есть 99% чистый метод SQL. Идея состоит в том, чтобы версионировать вашу схему. Вы можете сделать это двумя способами:

  • Используйте команду прагмы 'user_version' ( PRAGMA user_version ), чтобы сохранить добавочный номер для вашей версии схемы базы данных.

  • Сохраните номер версии в собственной таблице.

Таким образом, когда программа запускается, она может проверить схему базы данных и, при необходимости, выполнить запрос ALTER TABLE, а затем увеличить сохраненную версию. Это намного лучше, чем попытки различных обновлений «вслепую», особенно если ваша база данных растет и изменяется несколько раз за эти годы.

54
ответ дан 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: