mysql 如何锁住一行不存在的记录
2019-10-28 本文已影响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会报错,主键冲突异常。说明在行上面进行了锁定。