[Sqlite]-->嵌入式数据库事务理解以及实例操作

引子:

    1。 Sqlite在Windows、Linux 和 Mac OS X 上的安装过程

    2,嵌入式数据库的安装、建库、建表、更新表结构以及数据导入导出等等具体过程记录


SQLite 事务(Transaction

事务(Transaction)是一个对数据库运行工作单元。

事务(Transaction)是以逻辑顺序完毕的工作单位或序列,能够是由用户手动操作完毕,也能够是由某种数据库程序自己主动完毕。

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

实际上,您能够把很多的 SQLite 查询联合成一组,把全部这些放在一起作为事务的一部分进行运行。


1,事务的属性

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

·         原子性(Atomicity):确保工作单位内的全部操作都成功完毕,否则,事务会在出现问题时终止,之前的操作也会回滚到曾经的状态。

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

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

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


2。事务控制

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

·         BEGIN TRANSACTION:開始事务处理。

·         COMMIT:保存更改。或者能够使用 END TRANSACTION 命令。

·         ROLLBACK:回滚所做的更改。

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


3。BEGIN TRANSACTION 命令

事务(Transaction)能够使用 BEGIN TRANSACTION 命令或简单的 BEGIN 命令来启动。此类事务一般会持续运行下去,直到遇到下一个 COMMIT 或 ROLLBACK 命令。只是在数据库关闭或错误发生时,事务处理也会回滚。下面是启动一个事务的简单语法:

BEGIN;
or 
BEGIN TRANSACTION;


4。COMMIT 命令

COMMIT 命令是用于把事务调用的更改保存到数据库中的事务命令。

COMMIT 命令把自上次 COMMIT 或 ROLLBACK 命令以来的全部事务保存到数据库。

COMMIT 命令的语法例如以下:

COMMIT;
or
END TRANSACTION;


5,ROLLBACK 命令

ROLLBACK 命令是用于撤消尚未保存到数据库的事务的事务命令。

ROLLBACK 命令仅仅能用于撤销自上次发出 COMMIT 或 ROLLBACK 命令以来的事务。

ROLLBACK 命令的语法例如以下:

ROLLBACK;


6,实例操作

[root@localhost sqlite-autoconf-3080403]# sqlite3 tim.db

SQLite version 3.8.4.3 2014-04-03 16:53:12

Enter ".help" for usage hints.

sqlite> CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2));

如今。让我们開始一个事务。并从表中删除 age = 25 的记录,最后,我们使用 ROLLBACK 命令撤消全部的更改,先开启事务,然后删除AGE为25的记录。查询COMPANY表。会看到没有这条记录,例如以下图所看到的:



再ROLLBACK,再去查询COMPANY表,会看到AGE为25的记录被恢复。

 

如今开启一个事务。删除AGE为25的记录。再运行COMMIT提交所以的更改,那么就不会再看到已经删除的记录。例如以下所看到的:


再ROLLBACK,再去查询COMPANY表,会看到AGE为25的记录被恢复。

 


如今开启一个事务。删除AGE为25的记录。再运行COMMIT提交所以的更改。那么就不会再看到已经删除的记录。例如以下所看到的:

 

 

參考文章地址:http://www.w3cschool.cc/sqlite/sqlite-transaction.html

原文地址:https://www.cnblogs.com/yxysuanfa/p/7227189.html