mysql 事务测试
创建张表 lock1
增加字段 id,name 。
增加两条记录
1,a
2,b
启动第一个会话
BEGIN;
update lock1 set name='c' where id=1;
update lock1 set name='d' where id=2;
启动第二个会话
BEGIN;
update lock1 set name='c' where id=2;
update lock1 set name='d' where id=1;
执行顺序
分别执行 第一条更新语句。
再执行第一个会话的第二条语句,第二个会话的第二条语句。
这个时候就会产生行锁。
通过以下语句查看 锁。
查看当前事务:
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
查看锁定的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
可以等一会,可以查看到锁消失了,mysql 会释放锁,但是事务还在。
两个会话分别执行 rollback 语句,事务相继消失。