SQLite DB 中的案例语句语法错误



>我必须检查数据库中是否存在记录,然后update it,否则插入一条新记录。 但它给出了错误。 我应该如何改进该查询?

  CASE
    WHEN exists(select * from BackedUpDataIndex where filePath = 'C:ttt') THEN
(update BackedUpDataIndex set flags =14 where
    (exists(select * from BackedUpDataIndex where filePath = 'C:ttt')))
    ELSE insert into BackedUpDataIndex (filePath) values ('Hiii')
  END
不能

使用 CASE 表达式有条件地执行 DML 语句。 但是您可以尝试以下重写应该有效的逻辑:

UPDATE BackedUpDataIndex
SET flags = 14
WHERE EXISTS (SELECT 1 FROM BackedUpDataIndex WHERE filePath = 'C:ttt');
INSERT INTO BackedUpDataIndex (filePath)
SELECT 'Hiii'
WHERE
    NOT EXISTS (SELECT 1 FROM BackedUpDataIndex WHERE filePath = 'C:ttt') AND
    (SELECT Changes() = 0);

上面的逻辑是,如果EXISTS子句为真,则更新会发生,插入不会发生,反之亦然,如果存在则为假。

最新更新