mysql实现事务的sql代码和流程
事务来自于Mysql,与框架无关(无论是jadb还是mybatis还是spring,这些框架只是封装了mysql的事务代码,让程序员能更方便的实现事务操作)
sql代码:
mysql提供了三个关键字来完成事务的提交
1. begin:事务开始,后续的sql只会在内存中被执行(会返回执行结果,比如查询结果,但是数据不会生效),等待commit或rollback来确定最终执行结果
2. commit:将begin后面提交的sql执行完毕,并将结果持久化到硬盘上,使数据生效
3. rollback:将begin后续的sql语句回滚,也就是内存模拟允许的数据不再生效,重新读取硬盘上的数据
每一次事务运行完毕后(commit/rollbac),开启新的事务都要重新声明begin,以开启新的事务
示例:通过sql命令实现事务
BEGIN; #事务开始
#SQL语句 修改数据
UPDATE tb_salary s SET salary = 8888 WHERE salaryId=8
COMMIT; #事务提交
ROLLBACK; #事务回滚
流程:
如图,从连接池拿连接对象,并实现事务
连接对象中的所有sql语句存在内存中,并没有实际去修改mysql,只有发送了commit指令后,才会一起修改mysql,这就保证了sql语句的完整性和一致性