首页
学习
活动
专区
圈层
工具
发布

MySQL insert or update sql

MySQL 一条 sql 实现数据保存变更 insert or update ,如果没有执行insert,有就update 需要 有主键 PRIMARY 或 唯一索引 UNIQUE MySQL...中的INSERT … ON DUPLICATE KEY UPDATE语句,该语句是基于唯一索引或主键使用 ON DUPLICATE KEY UPDATE后面可以放多个字段,用英文逗号分割。...使用ON DUPLICATE KEY UPDATE,最终如果插入了一个新行,则受影响的行数是1,如果修改了已存在的一行数据,则受影响的行数是2,如果值不变,则受影响行数是0。...INSERT… ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe 翻译:使用BINLOG_FORMAT...插入……对于具有多个唯一密钥的表的重复密钥更新是不安全的 相关博客:https://blog.csdn.net/rick_zyl/article/details/79024612 mysql 有就更新

4.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL是如何保证数据一致性的?

    拿一个最简单的转账例子,用户A向用户B转1000元,正常的sql是这样的 update account set balance=balance-4000 where user='A' and balance...>= 4000; update account set balance=balance+4000 where user='B'; 示例表数据如下 如果最终用户A账户没有扣4000,而用户B账户多了4000...并发冲突 在执行第一条sql时,「执行器」会通过条件user='A' and balance >= 4000在「存储引擎」获取到符合条件的记录,然后进行balance扣减操作。...当在第一个事务中执行 update account set balance=balance-4000 where user='A' and balance >= 4000; 时,其他事务不能对user为...如下图,当第二个事务窗口执行 update account set balance=balance-1000 where user='A' and balance >= 1000; 时会被阻塞住,直到第一个事务提交或者超时

    9.6K1114

    数据库实战:MySQL多表更新JOIN操作的底层原理与性能调优指南

    accounts SET balance = balance - 100 WHERE id = 1;UPDATE accounts SET balance = balance + 100 WHERE...id = 2;-- 事务2:UPDATE accounts SET balance = balance - 50 WHERE id = 2;UPDATE accounts SET balance = balance...WHERE id = second_id FOR UPDATE; -- 执行转账 UPDATE accounts SET balance = balance - amount...://user:pass@localhost/db')updater.paginated_update(batch_size=500)九、总结多表联合更新是MySQL中强大但复杂的特性,中级开发者在掌握其基本用法后...需要建立数据库更新操作规范,包括:所有生产环境更新必须经过评审重大更新操作必须有回滚方案定期review更新SQL的性能模式建立更新操作的监控报警机制以上内容是关于MySQL多表更新JOIN操作相关的内容分享

    84010
    领券