数据库事务过程分析

    在实际工作开发中基本上都会用到数据库事务,又遇到一些疑问,因此找了一些资料学习了一下,在此做个记录,分享一下。

数据库在执行insert操作的时候,会先在数据库中创建一个临时表,这个临时表存放了要insert的记录,临时表会去数据库中查询是否有相同的记录,有没有违反唯一约束,如果有就返回insert失败信息和数据库报错信息给调用者,回滚事务撤销insert操作;如果没有违反约束,那就在数据库中插入记录,插入结束之后进行提交事务,把记录变更到真实存在的表当中去,再删除临时表,这就完成了数据库insert操作。删改查操作也是同样原理。

    数据库事务如果提交了之后回滚就无效了,所以数据库事务如果需要回滚的话是要在执行commit之前rollback才有效。假如现在开启数据库事务,然后向数据库中新增一条记录,再执行查询操作,是会查到新增的数据,但是在数据库客户端执行查询的时候就看不到新增的数据,原因是我们还没有提交事务,新增数据还没有变更到数据库持久化,当我们执行commit提交事务之后,就可以在数据库客户端查询到新增的记录了。

注:如有问题欢迎指正,大家一起学习。

你可能感兴趣的:(数据库事务过程分析)