sqlite: как использовать SELECT COUNT в операторе CASE? - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь добавить столбец, если столбец уже не существует с использованием 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...