2012-03-12 1 views
0

Итак, вот код, который я пытаюсь выполнить.Sqlite case statement радости

begin transaction; 
SELECT [version] as ver FROM [dbinfo]; 
WHEN ver = 1 THEN 
    UPDATE [dbinfo] SET [version]=2; 
    ver = 2; 
    ALTER TABLE [cards] ADD COLUMN [alternate] TEXT NOT NULL; 
END 
WHEN ver = 2 THEN 
    UPDATE [dbinfo] SET [version]=3; 
    ver = 3; 
    ALTER TABLE [cards] ADD COLUMN [dependent] TEXT NOT NULL; 
    ALTER TABLE [cards] ADD COLUMN [mutable] BOOLEAN; 
END 
commit transaction; 

Не работает. Получается застрял на WHEN. Я пробовал также CASE WHEN и пару других различных методов. Мне нужно пройти через ver от ver с этим, так что любые идеи о том, как сделать что-то вроде этой работы для Sqlite? Спасибо.

+1

Что не работает? что вы ожидаете от этого? – Randy

+0

Это sqlite, я думаю? Я ожидаю, что он выберет текущую dbinfo.version, затем внесут изменения, обновит dbinfo.version, а затем перейдем к следующему изменению. –

+0

Я предполагаю, что в практических терминах я хотел бы закончить, а затем перезапустить транзакцию между каждым оператором WHEN', но они все равно не работают. –

ответ

1

Невозможно сделать. Необходимо использовать обходные пути, используя транзакции и прочее.