mysql 原子写_在MySQL上加入insert / update是一个原子操作吗?

@H_502_1@在一个MysqL数据库中,每个基于InnoDB的表都启用了自动提交,子查询和/或连接的查询是原子的吗?

@H_502_1@例子:

@H_502_1@> INSERT INTO用户SELECT(x,y,z)FROM users,comments WHERE users.id = comments.user_id; (连接)

> UPDATE用户,评论SET users.x = x1 WHERE users.age> 30; (连接)

> UPDATE用户,评论SET users.x = x1,comments.y = y1 WHERE users.age> 30; (连接)

> UPDATE用户,注释SET users.x = x1,comments.y = y1 WHERE users.id IN(SELECT id FROM users WHERE age> 30); (子查询)

最佳答案

我理解你的问题是“每个查询本身都是一个原子操作吗?”.然后答案是肯定的.另外两个答案是对的,当他们说你所有的陈述都不是原子的.

@H_502_1@数据库中的原子性仅表示全部或全部.它并不意味着数据的正确性.你的陈述成功与否.它与连接或子查询无关.一个语句是一个语句,无论您的数据库是否必须在内存或磁盘上使用临时表.

@H_502_1@事务只是告诉您的数据库将多个语句视为一个语句.当其中一个语句失败时,所有语句都会回滚.

@H_502_1@这里一个重要的相关主题是isolation level.您可能想要了解这些内容.

@H_502_1@编辑(回答评论):

@H_502_1@那就对了.只要它是有效的声明并且没有发生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值