加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

在MySQL上插手insert / update是一个原子操纵吗?

发布时间:2021-03-07 13:04:38 所属栏目:编程 来源:网络整理
导读:在一个Mysql数据库中,每个基于InnoDB的表都启用了自动提交,子查询和/或毗连的查询是原子的吗? 例子: INSERT INTO用户SELECT(x,y,z)FROM users,comments WHERE users.id = comments.user_id; (毗连) UPDATE用户,评述SET users.x = x1 WHERE users.age> 30

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

例子:

> 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); (子查询) 最佳谜底 我领略你的题目是“每个查询自己都是一个原子操纵吗?”.然后谜底是必定的.其它两个谜底是对的,当他们说你全部的告诉都不是原子的.

数据库中的原子性仅暗示所有或所有.它并不料味着数据的正确性.你的告诉乐成与否.它与毗连或子查询无关.一个语句是一个语句,无论您的数据库是否必需在内存或磁盘上行使姑且表.

事宜只是汇报您的数据库将多个语句视为一个语句.当个中一个语句失败时,全部语句城市回滚.

这里一个重要的相干主题是isolation level.您也许想要相识这些内容.

编辑(答复评述):

那就对了.只要它是有用的声明而且没有产生电源妨碍或查询也许失败的其他缘故起因,它就完成了.原子性自己只担保声明是否正在完成.它担保了完备性而且数据没有破坏(导致写入操纵没有完成可能某些工作).它不能担保数据的正确性.给出像INSERT INTO foo SELECT MAX(id)1 FROM bar这样的查询;你必需确保通过配置正确的断绝级别,你不会获得幻读或任何对象.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读