首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何在MySQL上演示丢失的更新、未提交的数据、不可重复的数据、幻影

我们如何在MySQL上演示丢失的更新、未提交的数据、不可重复的数据、幻影
EN

Database Administration用户
提问于 2018-05-16 04:04:18
回答 1查看 184关注 0票数 0

我正在研究数据库管理系统,我有一个项目,我需要演示丢失的更新,未提交的数据,不可重复的数据,幻影在我选择的DMS中。我为我的项目选择了MySQL。但几次试图证明我失败了。这是我试过的案子。

这是事务T1

START TRANSACTION;

UPDATE roles SET roles.isAdmin = '0';

DO sleep(5);

ROLLBACK;

这是事务T2

START TRANSACTION;

SELECT * FROM roles WHERE 1;

COMMIT;

您能帮我找出如何演示丢失的更新、未提交的数据、不可重复的数据、幻影情况吗?

EN

回答 1

Database Administration用户

发布于 2018-05-18 02:55:07

请允许我提出另一个问题,我演示隔离级别REPEATABLE READ

事务1

代码语言:javascript
复制
start transaction;
select @parentName := S.parentalName
from `students` S
where S.studentID = '2';
do sleep(5);

set @parentName = CONCAT( @parentName, ' New ');

update `students`
set `parentalName` = @parentName
where `studentID` = '2';

commit;

事务2

代码语言:javascript
复制
start transaction;
select @parentName := S.parentalName
from `students` S
where S.studentID = '2';
do sleep(2);

set @parentName = CONCAT( @parentName, ' New_1 ');

update `students`
set `parentalName` = @parentName
where `studentID` = '2';

commit;

如我所料,结果是

代码语言:javascript
复制
parentName New New_1

但我的结果是parentName New_1。在这种情况下,事务2不要在select查询中等待事务1。在这种情况下我该怎么解释?

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/206833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档