根据 MySQL 中是否存在行执行 UPDATE 或 INSERT

Performing an UPDATE or INSERT depending whether a row exists or not in MySQL(根据 MySQL 中是否存在行执行 UPDATE 或 INSERT)
本文介绍了根据 MySQL 中是否存在行执行 UPDATE 或 INSERT的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 MySQL 中,我试图找到一种有效的方法,如果表中已存在行,则执行 UPDATE,如果行不存在,则执行 INSERT.

In MySQL, I'm trying to find an efficient way to perform an UPDATE if a row already exists in a table, or an INSERT if the row doesn't exist.

到目前为止,我已经找到了两种可能的方法:

I've found two possible ways so far:

  1. 很明显:打开一个事务,SELECT 查找该行是否存在,如果不存在则 INSERT 或 UPDATE 如果存在,则提交事务
  2. 首先 INSERT IGNORE 到表中(如果该行已经存在,则不会引发错误),然后是 UPDATE

第二种方法避免了事务.

The second method avoids the transaction.

您认为哪一种更有效,有没有更好的方法(例如使用触发器)?

Which one do you think is more efficient, and are there better ways (for example using a trigger)?

推荐答案

插入 ... 重复密钥更新

这篇关于根据 MySQL 中是否存在行执行 UPDATE 或 INSERT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)
SQL/MySQL: split a quantity value into multiple rows by date(SQL/MySQL:按日期将数量值拆分为多行)