MYSQL 行级锁

来源:互联网 发布:各国电视台直播软件 编辑:程序博客网 时间:2024/06/08 00:53

1新建一个用户表

CREATE TABLE `sys_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `mobile` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `realname` varchar(255) DEFAULT NULL,
  `username` varchar(255) DEFAULT NULL,
  `salt` varchar(255) DEFAULT NULL,
  `frozen` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;


2新建一个死循环的存储过程并执行:

DROP PROCEDURE test_sp1;

CREATE PROCEDURE test_sp1()
BEGIN  
    START TRANSACTION ;
            SELECT * FROM sys_user where id=14 for update;
                WHILE true
                    DO
                        SELECT 1;
                END WHILE;
                
END;

call test_sp1;

3执行一条查询语句;

   a:  SELECT * FROM sys_user WHERE id=14(可以正常查询出ID为14的用户)

   b: UPDATE  sys_user SET realname='李四324' WHERE id=14(锁生效无法更新)

   c: SELECT * FROM sys_user WHERE id=14 lock in share mode;(锁生效无法查询)


0 0
原创粉丝点击