SQLite - Transactions(事务)

SQLite - Transactions(事务) 首页 / SQLite入门教程 / SQLite - Transactions(事务)

事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。

事务性质

事务具有以下四个标准属性,通常由首字母缩写ACID指代。

  • 原子性 - 确保工作单元内的所有操作均已成功完成,否则,事务将在失败时中止,并且先前的操作将回滚到以前的状态。

  • 一致性 - 确保成功提交事务后数据库正确更改状态。

  • 隔离性 - 使事务能够独立运行并且彼此透明。

  • 耐久性 - 确保在系统故障的情况下持久化已提交事务的输出或效果。

事务控制

以下是用于控制事务的以下命令:

  • BEGIN TRANSACTION    - 开始事务。

  • COMMIT                              - 提交事务。

  • ROLLBACK                         - 回滚事务。

BEGIN TRANSACTION命令

可以使用BEGIN TRANSACTION或简单地使用BEGIN命令来启动事务,这样的事务通常会持续到遇到下一个COMMIT或ROLLBACK命令为止。但是,如果数据库关闭或发生错误,则事务也将回滚。以下是启动事务的简单语法。

BEGIN;
or 
BEGIN TRANSACTION;

COMMIT命令

COMMIT命令是事务性命令,用于提交事务将数据保存到数据库。

以下是COMMIT命令的语法。

COMMIT;
or
END TRANSACTION;

ROLLBACK命令

ROLLBACK命令是用于撤消事务,撤销已改动的数据。

以下是ROLLBACK命令的语法。

ROLLBACK;

考虑具有以下记录的COMPANY表。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           Learnfk       24          Houston     10000.0

现在,让无涯教程开始一个事务并从AGE= 25的表中删除记录。然后,使用ROLLBACK命令撤消所有更改。

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> ROLLBACK;

现在,如果您检查COMPANY表,它仍然具有以下记录-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           Learnfk       24          Houston     10000.0

让无涯教程开始另一个事务,并从AGE= 25的表中删除记录,最后无涯教程使用COMMIT命令来提交所有更改。

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> COMMIT;

如果现在检查COMPANY表仍然具有以下记录-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           Learnfk       24          Houston     10000.0

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

趣谈网络协议 -〔刘超〕

趣谈Linux操作系统 -〔刘超〕

大规模数据处理实战 -〔蔡元楠〕

编译原理之美 -〔宫文学〕

性能测试实战30讲 -〔高楼〕

A/B测试从0到1 -〔张博伟〕

如何讲好一堂课 -〔薛雨〕

郭东白的架构课 -〔郭东白〕

人人都用得上的数字化思维课 -〔付晓岩〕

好记忆不如烂笔头。留下您的足迹吧 :)