美文网首页
mysql 如何锁住一行不存在的记录

mysql 如何锁住一行不存在的记录

作者: 瑶瑶小仙女 | 来源:发表于2019-10-28 15:29 被阅读0次

场景还原(一)
1、先开启事务A,删除一行不存在的数据。

start transaction;
begin;
delete from id_name where id=40;

2、开启事务B,在上面删除的Id位置上插入一条新记录

start transaction;
begin;
insert into id_name values(40, 'c');

注意两个事务都是未提交的。你会看到事务B在等待事务A的提交。

场景还原(二)
原始数据:


image.png

1、开启事务A,插入一条记录

start transaction;
begin;
insert into id_name values(11, '1234');

2、开启事务B并插入一条记录

start transaction;
begin;
insert into id_name values(12, '12');
COMMIT;

我们发现不同行上面不会进行行级锁。

场景还原(三)
1、开启事务A,插入一条记录

start transaction;
begin;
insert into id_name values(11, '1234');

2、开启事务B并插入一条记录

start transaction;
begin;
insert into id_name values(11, '12');
COMMIT;

我们发现事务B无法提交,等我们提交了事务A之后事务B会报错,主键冲突异常。说明在行上面进行了锁定。

相关文章

网友评论

      本文标题:mysql 如何锁住一行不存在的记录

      本文链接:https://www.haomeiwen.com/subject/zjsbvctx.html