美文网首页
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