SQL读书笔记-事务处理

笔记|事务处理

理解sql事故处理
1 在sql事务处理期间,由语句所完成的工作,在永久写入数据库之前都可以取消(使用rollback语句)。commit告诉dbms使数据库的变化成为永久的。

下面就来理解一下事务处理过程
如:begin transaction
语句1
语句2
语句3
语句4
在应用程序正常结束之前,4条修改语句并未提交,即未成为永久的,由此,异常结束将使得dbms取消由应用程序体中的所有4条sql语句所做的修改。

如果想让前两条修改后永久保存到数据库中,而不管后两条是否成功。可以执行如下事务。
如: begin transaction
语句1
语句2
commit transaction
begin transaction
语句3
语句4

2 在交互式会话期间,dbms默认为自动提交模式,这就意味着dbms自动地提交(使之成为永久的)每一条成功执行的sql语句的操作。因而,如果执行以下语句
delete from employees
将不能使用 rollback transaction 使删除的数据在恢复。

如何禁用自动提交模式呢?MS_SQL SERVER允许通过执行以下语句禁用自动提交模式
begin transaction

3 对带用大量语句时,可以使用存储点的方法,允许应用程序取消所做工作并恢复到事务处理中的特定点,由此,应用程序可对存储点使用rollback语句,重新做出事务处理中的部份语句所做的工作,而不必从头开始
如:begin transaction

create table trans_table
(row_number smallint,descrp varchar(35))

insert into trans_table values(1,'insert 1')
insert into trans_table values(2,'insert 2')
//存储点save1
save transaction save1

delete from trans_table where row_number = 2
insert into trans_table values(3,'insert 3')
insert into trans_table values(4,'insert 4')
//存储点save2
save transaction save2

delete from trans_table where row_number = 1
delete from trans_table where row_number = 3

rollback transaction save2

update trans_table
set descrp = 'row 1 after 2'
delete trans_table where row_number = 4

commit transaction

在执行上面语句后
执行 select * from trans_table
的结果如下:
row_number descrp
1 'row 1 after 2'
3 'row 1 after 2'

时间: 2024-12-24 10:35:25

SQL读书笔记-事务处理的相关文章

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

原文:<SQL Server企业级平台管理实践>读书笔记--关于SQL Server数据库的备份方式 数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据 XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你需要一个查询处理引擎. SQL Server 数据库通过XML数据类型方法的T-SQL 语句来处理XQuery. SQL Server 并不支持所有的X

《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复

原文:<SQL Server企业级平台管理实践>读书笔记--几个系统库的备份与恢复 master数据库 master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户.系统配置设置.端点和凭证以及访问其他数据服务器所需要的信息.master数据库还记录着启动服务器实例所需要的初始化信息,每个其它数据库的主文件位置.master数据库是SQL Server启动的时候打开的第一个数据库.SQL Server是从这个数据库里找到其它数据的信息的.如果master数据

《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中数据文件空间使用与管理 1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以后,引入了分区表的概念(Table Partition),在存储组织上,现有的分区基本上替代了原来表格的概念,原先表的概念成为了一个逻辑概念.一个分区就是一个B树或者一个堆.而一张表格则是一个

《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server数据库文件分配方式 1.文件分配方式以及文件空间检查方法 最常用的检查数据文件和表大小的命令就是:sp_spaceused 此命令有三个缺陷:1.无法直观的看出每个数据文件和日志文件的使用情况.2.这个存储过程依赖SQL Server存储在一些系统视图里的空间使用统计信息计算出的结果,如果没有更新空间统计信息,比如刚刚发生大数据插入,sp_spaceused的结果就不准确.3.这个命令主要是针对普通用户的数据库,对

《SQL Server企业级平台管理实践》读书笔记——当我们的备份都已经损坏的时候该怎么办

原文:<SQL Server企业级平台管理实践>读书笔记--当我们的备份都已经损坏的时候该怎么办 作为数据库管理员最最痛苦的莫过于,当数据库宕机的时候需要找备份,但在这个时候突然发现备份文件也是坏的,这就意味着数据会丢失,为此可能会丢掉职位,饭碗不保,所以为此,我们一定要保证好备份的完整性,一般发生这种情况的原因莫过于一下几种: 1.备份文件和数据库放在同一个(或一组)的物理磁盘上.磁盘出现故障,备份也保不住了. 2.备份介质随坏,或者做的是网络备份,数据在网络传输中发生了损坏. 3.数据库在

《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中收缩数据库不好用的原因 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFILE ( { file_name | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATE

《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server如何设置自动增长和自动收缩项 SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发生.一般来讲,如果数据库不是很忙,默认的设置为自动增长,这种方式能够满足大部分的需求.但是在大量并发的情况下,申请数据文件和日志文件增长本身是一件非常消耗系统资源和影响性能的工作.所以如果

PHP-SOCKETS读书笔记

笔记 学习PHP2个月了,收获挺多.但是与别人不同的是,我更喜欢SOCKET.PHP在SOCKET这方面的文章太少了.所以决定写一系列PHP-SOCKET读书笔记.一直从最基本写到SOCKET_RAW.实例+心得.实例将会有端口转发(突破防火墙),动网类型EXP,端口扫描,PHP后门,发包型EXP框架.由于学习缘故,每周只能写一篇.现给出卷一.希望大家一起投入到PHP SHELL编程中来. 前言: PHP是世界上最流行的脚本语言之一.一直以来它在WEB编程中得到极广泛的应用.我想说的是PHP不仅