SQLite 一行SQL实现有则更新无则插入,多个条件,复杂条件

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
  (
    '《西游记》' ,
    '作者' ,  
    '吴承恩'
  ) ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痕迹丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值