对同一行运行2个更新事务

时间:2018-09-30 06:20:50

标签: mysql transactions locking

给出2个简单过程

DELIMITER $$
CREATE  PROCEDURE simpleproc()
BEGIN 
    UPDATE mytable SET name = 'bbb' WHERE id = 1;
    DO SLEEP(15);
END 
$$ DELIMITER ;


DELIMITER $$
CREATE  PROCEDURE simpleproc2()
BEGIN 
     UPDATE mytable SET name = 'jjj' WHERE id = 1;
END 
$$ DELIMITER ;

然后在一个连接中(在mysql工作台中)我运行第一个过程:

call simpleproc();

在第二个连接中,运行第二个过程

call simpleproc2();

让我惊讶的是,第二笔交易没有等待第一笔交易,而是立即执行。

我错过了什么?为什么第一笔交易没有锁id=1行?

mytable具有InnoDB引擎

0 个答案:

没有答案