事务隔离的用法:
1、net stop mysql, net start mysql --重启mysql数据库,清除隔离级别
2、mysql -u root -p密码 --登录进入MySQL数据库
3、select @@tx_isolation --查看当前隔离级别
4、set session transaction isolation level read uncommitted --设置为最低的隔离级别
5、use test --进入test数据库
6、select * from account --查看account表
7、set autocommit=0 --开启事务
8、update account set username = 'C' where id = 1; --修改account表中的数据,但是没有提交事务,此时数据库实在内存中修改,没有真正被修改
9、在开一个dos窗口,连上mysql,模拟另一个事务
mysql -u root -p密码
select @@tx_isolation
set session transaction isolation level read uncommitted
use test
select * from account
set autocommit=0 --开启一个新的事务
select * from account --这是你查到的数据C,但是上一个事务的修改还没有提交
10、rollback --结束事务,将原来的事务回滚
结论:
第一个级别:前面讲的三个错误都是会存在的
第二个级别:脏读错误没有了,但不可重复读和幻读仍然会有
第三个级别:脏读和不可重复读错误没有了,但幻读仍然会存在
第四个级别:可以解决所有的错误,但是会导致数据库的并发性非常弱,性能十分低下
6、事务设置回滚点
关键字:
用法:
set autocommit = 0 --
start transaction; --开启事务
#编写SQL语句
delete from account where id = 1;
savepoint a; --设置保存点
delete from account where id = 2;
#结束事务
commit;
rollback to a; --回滚到保存点
1、MySQL事务的介绍TCL:Transaction Control Language,事务控制语言事务:在MySQL数据库中表示一条或多条SQL语句组合在一起的一个执行单元,这个执行单元要么全部执行,要么全部不执行,否则就会出现逻辑错误!什么情况下会用到事务处理: 例如A和B之间转账,A向B转账1000元,那么应该有两条SQL语句,第一步:A账户-1000元,第二部:B账户+1000元,如果没有事务处理的功能,则就可能发生这样的情况:A账户减掉了1000元,B账户也没有增加1000元所以在类