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

先说说两个的区别:

“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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球