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

2022-01-09 00:00:00 sql-update insert mysql

在 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)?

推荐答案

插入 ... 重复密钥更新

相关文章