Замените таблицу, если ошибка схемы в SQLite - PullRequest
0 голосов
/ 23 марта 2019

Я работаю над приложением, которое часто использует SQLite3 и хочет убедиться, что с таблицами все в порядке: они соответствуют моим ожиданиям (имеют правильные столбцы, типы столбцов, notnull и т. Д.).Мой текущий подход - вручную проверять данные, возвращаемые PRAGMA table_info(), и удалять таблицу, если она неверна.

CREATE TABLE IF NOT EXISTS проверять только существование таблицы, но не соответствует ли это переданному описанию.Обычно это полезно, но не для проверок типов.

Есть ли способ сделать такую ​​проверку лучше, чем я это делаю?

1 Ответ

1 голос
/ 23 марта 2019

Я делаю это, используя базу данных user_version для отслеживания изменений схемы. Итак, общая процедура:

При первоначальном создании базы данных установите версию пользователя на 1, PRAGMA USER_VERSION = 1

В вашей программе проверьте, нужно ли обновлять / удалять / пересоздавать таблицы, используя что-то вроде следующего псевдокода (current_schema_version изначально равно 1, но увеличивается при каждом изменении схемы).

if user_version == 0
    new database, so create all tables in the database
    set user_version = current_schema_version
else if user_version == current_schema_version - 1
    create/recreate tables, or whatever other adjustments have to be made for new schema
    set user_version = current_schema_version
endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...