事务的开启
语法:start transaction;
事务开启之后就可以执行SQL语句,SQL语句执行成功后需要使用相应语句提交事务
SQL语句:
数据定义语句(DDL):主要用于定义数据库,数据表等(create)
数据操纵语句(DML):主要用于对数据库中的数据进行添加,修改和删除操作(alter,insert)
数据查询语句(DQL):主要用于查询数据(select)
数据控制语句(DCL): 主要用于控制用户的访问权限
提交事务
语法:commit;
注:事务中的操作语句都需要使用语句commit手动提交,提交后操作才会生效。
设置保存点(用于在事务内设置保存点)
语法:savepoint 保存点名称;
如不想提交当前事务,可取消事务。
取消事务(也称回滚)
语法:rollback;(只针对未提交的事务,已提交的事务不能执行)
语法:rollback to savepoint 保存点名称;(撤销事务中保存点之后的执行语句)
设置事务隔离级别
语句:set session transaction isolation level 隔离级别;
一、使用事务
接下来通过转账案例来演示如何使用事务。
1.首先创建数据库:
2.在库中创建表:
3.在表中插入数据:
4.验证是否插入成功,用select语句查询:
接下来使用事务演示如何实现转账功能。
1.首先开启事务:
2..通过update语句将a账户的100元钱转入b账户 ,提交事务:
3.使用select语句查询 account表中的余额:
二、提交事务
1.首先开启事务:
2.通过update语句将b账户的100元钱转入a账户
3.使用select语句查询 account表中的余额:
4.退出数据库并重新登录,再使用select语句查询 account表中的余额:
5.可以看出转账操作没有成功,这是因为事务中的语句不能自动提交。
接下来使用commit语句提交事务:
6.使用select语句查询 account表中的余额:
三、事务的回滚
1.开启事务,通过update语句将a账户的100元钱转入b账户 :
2.使用select语句查询 account表中的余额:
由于事务没有提交,就可以将事务撤销,也称回滚。
如图所示: