前言
本文选自网站小册子《My家双雄:深度学习MySQL与MyBatis》:http://www.mybatis.cn/324.html。此书从数据访问存储层为入口,将延伸到分布式、高并发方面的关键技术。希望这本书能对每一个做Java Web开发的读者带来帮助,也欢迎大家提出更多的修改建议。
1、插入测试数据
drop table if exists person;
CREATE TABLE person (
id int primary key,
name VARCHAR ( 20 )
);
insert into person values(1,'A');
insert into person values(2,'B');
insert into person values(3,'C');
2、事务设置
查看是否是自动提交,如下所示:
select @@autocommit;
然后,取消SQL语句的自动提交功能
set autocommit=0;
3、Select的表锁和行锁
默认情况下,select语句是不会对数据加写锁的,也就是不会阻止写入(update delete),通过使用 for update可以对数据加写锁。
3.1 行锁
如果是按照主键查询的话,那么加的是行锁。请看下面的验证过程。
第一步:在第一个MySQL连接窗口中,执行:
begin;
select * from person where id =1 for up