SQLite-高级-事务(Transaction)

事务(Transaction)

事务(Transaction)是一个对数据库执行工作单元。事务(Transaction)是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。

事务(Transaction)是指一个或多个更改数据库的扩展。例如,如果您正在创建一个记录或者更新一个记录或者从表中删除一个记录,那么您正在该表上执行事务。重要的是要控制事务以确保数据的完整性和处理数据库错误。

实际上,您可以把许多的 SQLite 查询联合成一组,把所有这些放在一起作为事务的一部分进行执行。

事务的属性

事务(Transaction)具有以下四个标准属性,通常根据首字母缩写为 ACID:

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

  • 一致性(Consistency):确保数据库在成功提交的事务上正确地改变状态。
  • 隔离性(Isolation):使事务操作相互独立和透明。
  • 持久性(Durability):确保已提交事务的结果或效果在系统发生故障的情况下仍然存在。

事务控制

使用下面的命令来控制事务:

  • BEGIN TRANSACTION:开始事务处理。

  • COMMIT:保存更改,或者可以使用 END TRANSACTION 命令。
  • ROLLBACK:回滚所做的更改。

事务控制命令只与 DML 命令 INSERT、UPDATE 和 DELETE 一起使用。他们不能在创建表或删除表时使用,因为这些操作在数据库中是自动提交的。

----------------------------------------------------------------------

举例:

1:开启事物--事物处理--事物提交

sqlite> BEGIN TRANSACTION;
sqlite> INSERT INTO COMPANY VALUES(6,‘LiF‘,45,‘Home‘,600000.0);
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
5|LIE|40|Ground|500000.0
6|LiF|45|Home|600000.0
sqlite> COMMIT TRANSACTION;
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
5|LIE|40|Ground|500000.0
6|LiF|45|Home|600000.0

-------------------------------------------------------------------

2:开启事物--事物处理--事物处理回滚(事物处理取消)

sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE COMPANY(            ID        INT   PRIMARY KEY NOT NULL,           NAME      TEXT  NOT NULL,           AGE       INT   NOT NULL,           ADDRESS   TEXT  ,           SALARY    REAL  );
INSERT INTO "COMPANY" VALUES(1,‘LiA‘,20,‘China‘,100000.0);
INSERT INTO "COMPANY" VALUES(2,‘LiB‘,25,‘America‘,200000.0);
INSERT INTO "COMPANY" VALUES(3,‘LiC‘,30,‘earth‘,300000.0);
COMMIT;
sqlite> BEGIN TRANSACTION;    
sqlite> INSERT INTO COMPANY VALUES(4,‘LiC‘,35,‘Air‘,400000.0);
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
4|LiC|35|Air|400000.0
sqlite> ROLLBACK TRANSACTION;
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
sqlite>

时间: 2024-08-06 02:08:16

SQLite-高级-事务(Transaction)的相关文章

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

FireDAC 下的 Sqlite [7] - 备份、优化、事务(Transaction)/

用 TFDSQLiteBackup 控件, 两三行代码即可完成 Sqlite 数据库的备份. procedure TForm1.Button1Click(Sender: TObject); begin   {先初始化目标}   FDConnection1.DriverName := 'SQLite';   FDConnection1.Params.Add('Database=C:\Temp\FDDemo_Back.sdb'); //如果不指定这个路径, 就是备份到内存   FDConnectio

sqlite的事务和锁,很透彻的讲解 【转】

原文:sqlite的事务和锁 http://3y.uu456.com/bp-877d38906bec097sf46se240-1.html 事务 事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行.事务的典型实例是转帐. 事务的范围 事务由3个命令控制:BEGIN.COMMIT和ROLLBACK.BEGIN开始一个事务,之后的所有操作都可以取消.COMMIT使BEGIN后的所有命令得到确认:而ROLLBACK还原BEGIN之后的所有操作.如: sqlite> BEG

事务(Transaction)

什么是事务(Transaction) 指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)-- 也就是由多个sql语句组成,必须作为一个整体执行 这些sql语句作为一个整体一起向系统提交, 要么都执行.要么都不执行 为什么需要事务 如,借钱问题: 假定钱从A转到B,至少需要两步: A的资金减少 然后B的资金相应增加 语法步骤: 开始事务:BEGIN TRANSACTION 事务提交:COMMIT TRANSACTION 事务回滚:ROLLBACK TRANSACTION 判断某条语句

Spring事务Transaction配置的五种注入方式详解

Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ??? 总结如下: ??? Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. ???DataSou

Spring高级事务管理难点剖析

1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(加入已有事务) 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.这是最常见也是默认的方式. PROPAGATION_SUPPORTS(跟随环境) 支持当前事务,如果当前没有事务,就以非事务方式执行. PROPAGATION_MANDATORY(需要事务) 使用当前的事务,如果当前没有事务,就抛出异

关于FMDB事务(Transaction)的解读

事务(Transaction)的描述: 事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行.所以,应该把它们看成一个事务.事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性.针对上面的描述可以看出,事务的提出主要是为了解决并发情况下保持数据一致性的问题. 事务的标准定义: 指作为单个逻辑工作单元执

JAVA学习笔记(五十四)- 事务Transaction与批处理

事务Transaction /* * 事务Transaction * JDBC默认开启自动提交事务,需要关闭,才能手动控制事务 * * 默认MySQL存储引擎为My...,其不支持事务处理,修改为InnoDB引擎 * create table 表名( ) engine=InnoDB default charset=utf8; * * InnoDB引擎默认关闭自动事务提交,修改MySQL为自动提交事务 * set autocommit=1; //1表示自动提交,0表示关闭自动提交 * show v

JDBC中的事务-Transaction

事务-Transaction 某些情况下我们希望对数据库的某一操作要么整体成功,要么整体失败,经典的例子就是支付宝提现.例如我们发起了支付宝到银行卡的100元提现申请,我们希望的结果是支付宝余额减少100元,银行卡余额增加100元,而不是支付宝的100元被扣除,而银行卡的100元却没收到.也就是说,要么100元从支付宝扣除的同时银行卡也会多出一百元,要么这次提现失败支付宝的100元还在,银行卡也没有收到钱.支付宝扣钱和银行卡收钱,这两件事要么都成功要么都失败. 事物的ACID特性: 满足ACID

redis源码分析之事务Transaction(下)

接着上一篇,这篇文章分析一下redis事务操作中multi,exec,discard三个核心命令. 原文地址:http://www.jianshu.com/p/e22615586595 看本篇文章前需要先对上面文章有所了解: redis源码分析之事务Transaction(上) 一.redis事务核心命令简介 redis事务操作核心命令: //用于开启事务 {"multi",multiCommand,1,"sF",0,NULL,0,0,0,0,0}, //用来执行事