Я пытаюсь добавить столбец, если столбец уже не существует с использованием SQLite. Рассмотрев тонну вопросов о переполнении стека, я считаю, что единственный способ сделать это в SQL-выражении - это использовать pragma_table_info
(однако это доступно только для sqlite v3.16 и более поздних версий).
Итак, я пытаюсь выполнить запрос ALTER
, если запрос SELECT COUNT
> 0
.
Вот мои попытки, все выдают синтаксическая ошибка .
Попробуйте # 1
SELECT COUNT(*) AS CNTREC
CASE CNTREC
WHEN CNTREC > 0
THEN
ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END
FROM pragma_table_info('runs')
WHERE name='scheduledRun';
Попробуйте # 2
SELECT COUNT(*) AS CNTREC
CASE
WHEN CNTREC > 0
THEN
ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END
FROM pragma_table_info('runs')
WHERE name='scheduledRun';
Попробуйте # 3
SELECT COUNT(*) AS CNTREC FROM pragma_table_info('runs') WHERE name='scheduledRun';
CASE CNTREC WHEN CNTREC > 0
THEN
ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END
Попробуйте # 4
SELECT COUNT(*) AS CNTREC FROM pragma_table_info('runs') WHERE name='scheduledRun'
CASE CNTREC WHEN CNTREC > 0
THEN
ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END
Попробуйте # 5
SELECT COUNT(*) AS CNTREC FROM pragma_table_info('runs') WHERE name='scheduledRun'
CASE WHEN CNTREC > 0
THEN
ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END
Кто-нибудь видит, что я делаю не так?
Документы: Корпус , Выбрать , Изменить
Пожалуйста, не давайте мне никакого кода Java или C ++, я ищу только решение pure sqlite .