SQLite3之事务机制详解

本文详细介绍了SQLite3的事务机制,包括原子性、一致性、隔离性和持久性的概念。在SQLite中,事务可以在启动后在内存中进行操作,直到提交才会改变数据库。提交事务后,操作不可回滚;而回滚则可以恢复到最近的提交状态。如果数据库关闭或发生错误,未提交的事务会自动回滚。

概述

SQLite事务机制:
(1)提高对数据操作的速率,因为这可以减少频繁对数据库的写入或读取(相当于提供了一个缓冲区)
(2)启动事务后未提交的操作都是在内存中进行的,并不会真正影响到库中的数据,
(3)只有提交后的操作才会去修改库中的数据(注意:当提交后将无法回滚),因为在提交或者回滚后,
	我们在内存中的操作已经被提交或者回滚到初始状态了;
(4)当提交或者回滚后,需要重新开启事务

SQLite事务机制具有的属性(ACID)

原子性(Atomicity):确保工作单位内的所有操作都成功完成,否则,事务会在出现故障时终止,之前的操作也会回滚到以前的状态。

一致性(Consistency):确保数据库在成功提交的事务上正确地改变状态。

隔离性(Isolation):使事务操作相互独立和透明。

持久性(Durability):确保已提交事务的结果或效果在系统发生故障的情况下仍然存在。



1、启动事务

启动事务后,启动事务后此时的操作将不会直接提交到库中,而是在内存中进行操作,直至内存中的操作被提交到库中,才会去修改库中的数据

BEGIN;
或者
BEGIN TRANSACTION;

在这里插入图片描述



2、提交事务

当我们去提交事务后,我们在事务中对数据的操作将会被提交到库中;提交后将无法进行回滚,此时再回滚将提示Error: cannot rollback - no transaction is active

COMMIT;
或者
END TRANSACTION;

在这里插入图片描述



3、回滚

当我们在启动事物后出现了操作失误,可通过回滚回滚到数据最近一次提交时;此时未提交的事务都将失效恢复至最近提交时的状态

ROLLBACK;

在这里插入图片描述

若是在数据库关闭或发生错误时,事务处理也会自动回滚
因为此时我们在内存中的操作还未被提交到我们的数据库中改变库中的数据,因此未提交操作但是数据库被关闭或者发生错误将会导致此前的操作被丢失



文章参考:https://www.runoob.com/sqlite/sqlite-transaction.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值