Есть ли if-like условная структура в SQLite (разные операторы в разных случаях)? - PullRequest
0 голосов
/ 24 февраля 2019

Есть ли в SQLite структура, похожая на if?В приведенном ниже коде я попытался вставить, если он существует, или обновить значение, если оно есть, но ни один из них не работает:

SELECT CASE EXISTS(SELECT BuildingType FROM Building_GreatPersonPoints WHERE BuildingType = 'BUILDING_OP_BUILDING' AND GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET')
    WHEN 0 THEN
        INSERT INTO Building_GreatPersonPoints(BuildingType, GreatPersonClassType, PointsPerTurn) VALUES('BUILDING_OP_BUILDING', 'GREAT_PERSON_CLASS_PROPHET', 3)
    WHEN 1 THEN
        UPDATE Building_GreatPersonPoints SET PointsPerTurn = 3 WHERE BuildingType='BUILDING_OP_BUILDING' AND  GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET';

Ошибка

возле "INSERT":ошибка синтаксиса: Select Case EXISTS (SELECT BuildingType ОТ Building_GreatPersonPoints ГДЕ BuildingType = 'BUILDING_OP_BUILDING' И GreatPersonClassType = 'GREAT_PERSON_CLASS_PROPHET'), когда 0 затем вставить

INSERT INTO Building_GreatPersonPoints(BuildingType, GreatPersonClassType, PointsPerTurn) VALUES('BUILDING_OP_BUILDING', 'GREAT_PERSON_CLASS_PROPHET', 3)
WHEN NOT EXIST(SELECT * FROM Building_GreatPersonPoints WHERE BuildingType = 'BUILDING_OP_BUILDING' AND GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET');

UPDATE Building_GreatPersonPoints SET PointsPerTurn = 3 WHERE BuildingType='BUILDING_OP_BUILDING' AND  GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET';

ошибка

около "WHEN": синтаксическая ошибка: INSERT INTO Building_GreatPersonPoints (BuildingType, GreatPersonClassType, PointsPerTurn) ЗНАЧЕНИЯ ('BUILDING_OP_BUILDING', 'GREAT_PERSON_CLASS_PROPHET', 3) КОГДА

1015 * *1016* 1015 * *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* 1016 *1016* должен мне ответитьЭто?Если возможно, скажите, пожалуйста, общую условную структуру (например, выполните A и B и C, если true, и C и D, если false).

...