SQLite 一行SQL实现有则更新无则插入,多个条件,复杂条件
示例代码:https://github.com/miqt/MultiProgressKV/blob/master/MultiProgressKV/src/main/java/com/miqt/multiprogresskv/DBHelper.java
例如想实现以下逻辑
if (db has name ==小明 && 身高 == 170cm)
update 。。。。
else
insert 。。。。
可以参考以下SQL:
CREATE TABLE [TABLE_NAME](
[id] INTEGER PRIMARY KEY AUTOINCREMENT,
[name] TEXT NOT NULL ,
[attr] TEXT NOT NULL ,
[value] TEXT NOT NULL );
CREATE UNIQUE INDEX [TABLE_NAME]
ON [TABLE_NAME](
[name],
[attr]);
CREATE UNIQUE INDEX [TABLE_NAME] 声明了只有name,和attr都重复才算唯一索引,这适用于类似插入一本书的场景,一本书的书名和作者只可能有一个,而单独的书名,和作者本身,可能对应很多本书。
以下语句执行,则是有则更新,无则插入的效果,以下SQL执行多次只会生成一行结果,而修改name,或者attr任意一个列,则又会新插入一个。
REPLACE INTO TABLE_NAME
(
name ,
attr ,
value
)
VALUES
(
'《西游记》' ,
'作者' ,
'吴承恩'
) ;