自学内容网 自学内容网

DBAPI如何实现插入数据前先判断数据是否存在,存在就更新,不存在就插入

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 两个参数
alt
  • sql填写call upsert( #{id}, #{name} ) alt

  • 保存即可

访问API

  • 先插入一条数据
alt
  • 可以看到数据新增
alt
  • 再传入同一个id,可以看到数据更新
alt
alt

本文由 mdnice 多平台发布


原文地址:https://blog.csdn.net/qq1032355091/article/details/142533914

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!