首页 > 解决方案 > SQLite 中的 IF ELSE 条件

问题描述

我是 SQLite 的新手。

我在 SQLite 中寻找基于条件检查IF ELSE执行UPDATEOR操作。INSERT

我尝试的是:

IF EXISTS(SELECT 1 FROM TblTest WHERE ID = 1 AND Name = 'XYZ')
BEGIN
END
    UPDATE TblTest
    SET Address = 'NYC',
    Mobile='102938340'
    WHERE ID = 1 AND Name='XYZ'
ELSE
BEGIN
INSERT INTO TblTest(ID,Name,Address,Mobile)
    VALUES(1,'XYZ','NYC','102938340');
END

收到错误:

结果:在“IF”附近:语法错误

标签: sqlitedb-browser-sqlite

解决方案


如果你有一个唯一的索引(ID, Name),你可以利用 SQLite 的REPLACE语法:

CREATE UNIQUE INDEX idx_id_name ON TblTest (ID, Name);

INSERT OR REPLACE INTO TblTest (ID, Name, Address, Mobile)
VALUES
    (1, 'XYZ', 'NYC', '102938340');

这会产生这样的效果,如果表中已经存在ID=1Name=XYZ存在记录,则将执行更新。否则,将插入一条新记录。

两者上的唯一索引ID(可能是当前主键)似乎是多余的 Name但是,无论如何,这种组合在理想情况下应该始终是唯一的。


推荐阅读