当前位置: 首页 > news >正文

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 多平台发布


http://www.mrgr.cn/news/36148.html

相关文章:

  • 机器学习算法与Python实战 | 三万字详解!GPT-5:你需要知道的一切(上)建议收藏!
  • OpenCV4.8 开发实战系列专栏之 01- 环境搭建与图像读写
  • 使用 from __future__ import annotations 语句来允许在类型注释中使用尚未定义的类名
  • centos7安装Redis单机版
  • AI时代下的程序员:如何应对技术变革与提升竞争力
  • 先进封装技术 Part01---“凸块”(Bump)科普
  • 小孩真的需要手机上学吗?怎样远程了解他在学校用iPhone干什么?
  • 工作安排 - 华为OD统一考试(E卷)
  • Educational Codeforces Round 20 F. Coprime Subsequences(DP+容斥)
  • 深入解析网络通信关键要素:IP 协议、DNS 及相关技术
  • 股价上涨210%后,目标价又被花旗大幅上调,AppLovin还能继续上涨吗?
  • 前端文件上传全过程
  • PG逻辑订阅功能
  • 尚硅谷MyBatis笔记
  • Spring 的作用和优势
  • 省市区乡村五级地址库
  • C/C++语言基础--C++类数据、静态与非静态、常成员、友员、成员变量与函数指针等相关知识点
  • 3. 轴指令(omron 机器自动化控制器)——>MC_MoveZeroPosition
  • uboot — uboot命令的使用
  • 如何在 Linux 中管理和清理日志文件( `find` 命令按时间批量删除日志)