先说说两个的区别:
“insert or ignore”:如果表中不存在就插入,存在则忽略当前新数据;
“insert or replace”:如果表中不存在就插入,存在则更新当前最新数据;
"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
日志清除 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');
判断事件名称和时间,发现表格条目存在,忽略,表格未更新;
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 25.8
表格中设定值发生改变,值由 15.0
更新为 25.8
。
Original: https://blog.csdn.net/qq_39687342/article/details/121744675
Author: 系统更新中
Title: SQL插入新条目条件处理:sqlite “insert or replace“ 和 “insert or ignore“
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816043/
转载文章受原作者版权保护。转载请注明原作者出处!