DBAPI实现数据不存在即插入、存在即更新
场景
-
往数据库插入数据的时候,需要先判断一下记录是否在数据库已经存在,如果已经存在就更新记录,如果不存在,才插入数据。
实现方案
-
采用存储过程实现,以mysql为例子
创建存储过程
-
在数据库执行以下语句创建存储过程
CREATE PROCEDURE upsert(IN v_id INT, IN v_name VARCHAR(255))
BEGIN
DECLARE v_count INT;
-- 尝试查找是否存在具有相同唯一键的记录
SELECT count(1) INTO v_count FROM student WHERE id = v_id;
-- 判断记录是否存在
IF v_count > 0 THEN
-- 更新记录
UPDATE student SET name = v_name WHERE id = v_id;
ELSE
-- 插入新记录
INSERT INTO student (id, name) VALUES (v_id, v_name);
END IF;
END;
❝调用存储过程,传入两个参数,会根据第一个参数
id
判断数据是否存在,id
存在就更新name
,不存在就插入数据例如
call upsert(3,'abc')
创建API
-
设置 id
name
两个参数
-
sql填写
call upsert( #{id}, #{name} )
-
保存即可
访问API
-
先插入一条数据
-
可以看到数据新增
-
再传入同一个id,可以看到数据更新
本文由 mdnice 多平台发布