[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
[Sqlite]-->嵌入式数据库事务理解以及实例操作的更多相关文章
- [Sqlite] 移动嵌入式数据库Sqlite日报SQL操作语句汇总
,EXPLAIN分析 没有建立索引之前.分析都是表扫描: sqlite> EXPLAIN SELECT * FROM COMPANY WHERE Salary < 20000; add ...
- 针对Redis队列的理解,实例操作(转)
原文:本文出自 “峰云,就她了.” http://rfyiamcool.blog.51cto.com/1030776/1131271 为什么要使用消息队列 用我的话来说, 队列特点是先进先出,在任务 ...
- 数据库事务与MySQL事务总结
事务特点:ACID 从业务角度出发,对数据库的一组操作要求保持4个特征: Atomicity(原子性):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败 ...
- 在Laravel中使用数据库事务以及捕获事务失败后的异常
Description 在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法.如果在事务的闭包内抛出异常,事务将会被自动还原.如果闭包运 ...
- 数据持久化之嵌入式数据库 SQLite(三)
阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 SQLite 是 D. Richard Hipp 用 C 语言编写的开源 ...
- sqlite嵌入式数据库简介及特性
p.p1 { margin: 0; font: 12px "Helvetica Neue"; color: rgba(69, 69, 69, 1) } p.p2 { margin: ...
- sqlite嵌入式数据库C语言基本操作(1)
sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...
- SQLite/嵌入式数据库
SQLite/嵌入式数据库 的项目要么不使用数据库(一两个文配置文件就可以搞定),要么就会有很多的数据,用到 postgresql,操练sqlite的还没有.现在我有个自己的小测试例子,写个数据库对比 ...
- 理解MySQL数据库事务
1. 什么是事务处理? 事务处理是一种机制,它是用来管理必须成批执行的mysql操作.来保证数据库不完整的操作结果. 2. 为什么要使用事务处理? 在使用mysql操作数据的过程中,如果只是简单的中小 ...
随机推荐
- 【bzoj2132】圈地计划 网络流最小割
题目描述 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地.据了解,这块土地是一块矩形的区域,可以纵横划 ...
- post方式的数据抓取
public static String sendPost(String url, String param) { PrintWriter out = null; Buff ...
- Hibernate逆向工程生成代码
编辑此文章,其目的是方便以后根据表生成相应的代码,然而并非所有的代码都是如此.这里的Hibernate 即响应题目的ssh框架中的“h”. 如图所示,点击右上角,在myeclipse之中.再点击Mye ...
- Kubectl管理工具
1.常用指令如下 运行应用程序 [root@manager ~]# kubectl run hello-world --replicas=3 --labels="app=example&qu ...
- 两个Vue Demo
1 实现 person list <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- 关于百度富文本编辑器UEdit的初始化内容失败问题
百度富文本编辑器毫无疑问是强大的,但也会出问题.这个问题是在脚本中普遍存在的,由异步性导致的加载顺序问题. 我们使用 var ue = UE.getEditor('editor', {}); 创建实例 ...
- webRTC实战总结
前言 前段时间一直在忙一个基于WebRTC的PC和移动端双向视频的项目.第一次接触webRTC,难免遇到了许多问题,比如:webRTC移动端兼容性检测,如何配置MediaStreamConstrain ...
- Win32 OpenGL 编程( 1 ) Win32 下的 OpenGL 编程必须步骤
http://blog.csdn.net/vagrxie/article/details/4602961 Win32 OpenGL 编程( 1 ) Win32 下的 OpenGL 编程必须步骤 wri ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---25
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- linux内核情景分析之命名管道
管道是一种"无名","无形文件,只可以近亲进程使用,不可以再任意两个进程通信使用,所以只能实现"有名","有形"的文件来实现就可以 ...