mySQL事务实现
设置默认引擎:
事务实现,
首先需要你的mysql支持innodb引擎,查看你的mysql支持的引擎的语法为:
show engines \G
我使用show engines命令 \G一共显示有9.row行
可看到 Support:DEFAULT,看到这个代表mySQL的数据库引擎默认为
innodb引擎了,那样就可以使用事务了
如果不是默认为
innodb引擎
,那么
在sql命令输入框输入修改数据表存储引擎的命令 :
ALTER TABLE tablename TYPE = INNODB
注:tablename是你数据库中使用事务的表名。如果你的数据库引擎默认为
innodb引擎了,那么就不用操作这步了,否则会提示错误
以下是我在mySQL5.6中实现的事务图全过程:
说明:我的数据库test中有一个testTable表,testTable表中只有一个int类型的a1字段
1、选择数据库 use test,查询testTable内容
2、开启事务
3、事务执行语句,更改testTable中a1字段为5
4、查询事务执行语句是否已经执行
个人理解:
这里需要注意,现在我查询了testTable的内容,可见,a1字段已经变为5。我现在还还有使用commit提交,但查询出来的结果已经变为5了,因为我现在还是在事务里面,即还在start transaction 和commit的过程中。在事务里面的SQL语句,在还没有使用commit提交,都是相当于虚拟执行的,这也是为什么事务开启了后,一旦遇到异常,它就会回滚,还原为未执行SQL语句之前的状态的原因。
为了验证事务到底有没有真实提交,我们应该还需要在其它mysql管理工具来查询表的内容。我这里使用了mySQL管理工具的SQLyog。这里可以看到我小的红圈中也是用了同样的语句查询testTable,但结果依然显示为1,也就是和我们没有开启事务时查询的内容一样,那么就证明了我们在使用update testTable set a1=5 这条语句还没有提交
5、提交事务
6、查询结果
可以看到,只有在commit提交后,事务中的语句才会执行