我正在研究数据库管理系统,我有一个项目,我需要演示丢失的更新,未提交的数据,不可重复的数据,幻影在我选择的DMS中。我为我的项目选择了MySQL。但几次试图证明我失败了。这是我试过的案子。
START TRANSACTION;
UPDATE roles SET roles.isAdmin = '0';
DO sleep(5);
ROLLBACK;
START TRANSACTION;
SELECT * FROM roles WHERE 1;
COMMIT;
您能帮我找出如何演示丢失的更新、未提交的数据、不可重复的数据、幻影情况吗?
发布于 2018-05-18 02:55:07
请允许我提出另一个问题,我演示隔离级别REPEATABLE READ。
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;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;如我所料,结果是
parentName New New_1但我的结果是parentName New_1。在这种情况下,事务2不要在select查询中等待事务1。在这种情况下我该怎么解释?
https://dba.stackexchange.com/questions/206833
复制相似问题