SQL插入新条目条件处理:sqlite “insert or replace“ 和 “insert or ignore“

SQL插入新条目条件处理:sqlite “insert or replace” 和 “insert or ignore”

先说说两个的区别:

"insert or ignore":如果表中不存在就插入,存在则忽略当前新数据;
“insert or replace”:如果表中不存在就插入,存在则更新当前最新数据;

接下来举例说明
1、首先建表,说明键值或者判断唯一性条件;
"create table SourceLogDat (事件名称 TEXT ,时间 TEXT ,实际值 TEXT, 设定值 TEXT,UNIQUE(事件名称, 时间))"
或者
"create table SourceLogDat (事件名称 TEXT ,时间 TEXT ,实际值 TEXT, 设定值 TEXT,PRIMARY KEY(事件名称, 时间))"

经过以上建表后,事件名称时间就是主键值唯一性标识,即"PRIMARY KEY“或者”UNIQUE"中内容。
假如数据表已有以下数据

事件名称     		时间      		 实际值  	 设定值
---------------------------------------
模块启动		2021/11/12 14:25:02		  12.2        15.0
单模块故障	2021/10/12 08:25:42		  12.1        15.0
负载低压		2021/11/05 11:25:12		  11.2        15.0
2、通过"insert or ignore"插入新条目;

(1)、插入不重复条目

insert or ignore into SourceLogDat values ('日志清除','2021/11/12 14:25:02','12.5','25.8');

判断事件名称和时间,发现表格条目不存在,可插入,更新后表格变为:

事件名称     		时间      		 实际值  	 设定值
---------------------------------------
模块启动		2021/11/12 14:25:02		  12.2        15.0
单模块故障	2021/10/12 08:25:42		  12.1        15.0
负载低压		2021/11/05 11:25:12		  11.2        15.0
日志清除		2021/11/12 14:25:02		  12.5        25.8

(2)、插入已重复条目

insert or ignore into SourceLogDat values ('模块启动','2021/11/12 14:25:02','12.5','25.8');

判断事件名称和时间,发现表格条目存在,忽略,表格未更新;

2、通过"insert or replace"插入新条目;
insert or replace into SourceLogDat values ('交流欠压','2021/11/05 05:25:12','12.5','15.0');

判断事件名称和时间,发现表格条目不存在,可插入,更新后表格变为:

事件名称     		时间      		 实际值  	 设定值
---------------------------------------
模块启动		2021/11/12 14:25:02		  12.2        15.0
单模块故障	2021/10/12 08:25:42		  12.1        15.0
负载低压		2021/11/05 11:25:12		  11.2        15.0
日志清除		2021/11/12 14:25:02		  12.5        25.8
交流欠压		2021/11/05 05:25:12		  12.5        15.0

(2)、插入已重复条目

insert or replace into SourceLogDat values ('交流欠压','2021/11/05 05:25:12','12.5','25.8');

判断事件名称和时间,发现表格条目存在,更新为最新值,表格更新:

事件名称     		时间      		 实际值  	 设定值
---------------------------------------
模块启动		2021/11/12 14:25:02		  12.2        15.0
单模块故障	2021/10/12 08:25:42		  12.1        15.0
负载低压		2021/11/05 11:25:12		  11.2        15.0
日志清除		2021/11/12 14:25:02		  12.5        25.8
交流欠压		2021/11/05 05:25:12		  12.5        25.8

表格中设定值发生改变,值由15.0更新为25.8

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值