sql事务处理

数据库的更新通常都是由客观世界的所发生的事件引起的。为保证数据库内容的一致,就要将数据库的一组操作作为一个整体来进行,要么全部成功完成,要么全部失败退出。如果由于故障或其它原因而使一组操作中有一些完成,有一些未完成,则必然会使得数据库中的数据出现不一致,从而使得数据库的完整性受到破坏。因此,更新操作序列必须作为一个整体在DBMS执行时出现,即“要么全做,要么全不做”。SQL提供了事务处理的机制,来帮助DBMS实现上述的功能。

事务处理(TRANSACTION)是由一个或多个SQL语句序列结合在一起所形成的一个逻辑处理单元。事务处理中的每个语句都是完成整个任务的一部分工作,所有的语句组织在一起能够完成某一特定的任务。DBMS在对事务处理中的语句进行处理时,是按照下面的约定来进行的,这就是“事务处理中的所有语句被作为一个原子工作单位,所有的语句既可成功地被执行,也可以没有任何一个语句被执行”。DBMS负责完成这种约定,即使在事务处理中应用程序异常退出,或者是硬件出现故障等各种意外情况下,也是如此。在任何意外情况下,DBMS都负责确保在系统恢复正常后,数据库内容决不会出现“部分事务处理中的语句被执行完”的情况。

sql语言为事务处理提供了两个重要的语句,它们是COMMIT和ROLLBACK语句。它们的使用格式是:

COMMIT WORK

ROLLBACK WORK

COMMIT语句用于告诉DMBS,事务处理中的语句被成功执行完成了。被成功执行完成后,数据库内容将是完整的。而ROLLBACK语句则是用于告诉DBMS,事务处理中的语句不能被成功执行。这时候,DBMS将恢复本次事务处理期间对数据库所进行的修改,使之恢复到本次事务处理之前的状态。

参考资料:sql语言教程 Sql语言基础

返回“数据库基础知识ABC”目录

时间: 2024-10-05 07:32:24

sql事务处理的相关文章

SQL读书笔记-事务处理

笔记|事务处理 理解sql事故处理1 在sql事务处理期间,由语句所完成的工作,在永久写入数据库之前都可以取消(使用rollback语句).commit告诉dbms使数据库的变化成为永久的. 下面就来理解一下事务处理过程如:begin transaction语句1语句2语句3语句4在应用程序正常结束之前,4条修改语句并未提交,即未成为永久的,由此,异常结束将使得dbms取消由应用程序体中的所有4条sql语句所做的修改. 如果想让前两条修改后永久保存到数据库中,而不管后两条是否成功.可以执行如下事

SQL语言概述

SQL语言是一种用于和关系数据库进行交互通信的计算机语言.当用户想检索数据库中的数据时,就可以用SQL语言发出此请求,DBMS对SQL请求进行处理,检索到所要求的数据,并将其返回给用户.这个向数据库请求并得到数据的过程称为数据库查询,这就是SQL语言(Structure Query Language)这一名称的由来.如今,SQL语言已不仅仅是一个查询工具,它已成为可以对关系数据库中的数据进行组织.管理和检索的主要工具. 现在,SQL用于控制DBMS提供给用户的所有功能,SQL语言已成为用户与基于

SQL语言语句

在讲述sql语言之前,我们先定义一个小型销售公司关系数据库的内容,该数据库所包含的关系表有: ▲OFFICE表.该表的列有:OFFICE,CITY,REGION,MGR,TARGET和SALES:分别表示销售处编号,销售处所在的城市名,销售处所在的地区名,销售处经理编号,销售处的目标和销售处的销售额. ▲SALESREPS表.该表的列有:EMPL--NUM,NAME,AGE,REP_OFFICE,TITLE,HIRE_DATE,MANAGER,QUOTA和SALES:分别表示销售处名称,雇佣日期

数据库基础知识ABC

数据库系统 数据模型 关系数据模型 关系数据库系统 关系数据库理论 SQL语言概述 SQL的元素 SQL语言语句 1.SQL数据查询语句 2.sql数据添加语句 3.sql数据删除语句 4.sql数据修改语句 5.sql数据库结构操作语句 6.sql视图操作语句 7.sql安全操作语句 8.sql事务处理

E-MapReduce集群搭建HAWQ实践

HAWQ是一种基于HDFS的MPP(Massively Parallel Processing) SQL引擎,支持标准SQL/事务处理,性能比原生Hive快几百倍. 本文介绍在E-MapReduce集群上面如何搭建HAWQ. 零. 部署模式 HAWQ有多种部署模式 非HA standalone yarn HA standalone yarn 本文以HA-yarn模式为例,其它部署模式配置方面相对简单点,可以参考文档. 一.创建集群 在E-MapReduce产品页创建集群,本例使用HA集群. 5台

C# 事物(Transaction)处理时,向一个表里面写入多行记录时出错:参数变量名重复

问题描述 我的代码如下:///<summary>///sql事务处理///</summary>///<paramname="sqlString">sql查询字符串数组A</param>///<paramname="sqlparam">对应A的相应的SqlParameter[]的ArrayList对象</param>///<returns>返回的字符串为该方法出现异常的描述,当它为空则

哪样插入数据性能更优?

问题描述 我现在的情况是:用存储过程插入数据,底层方法是每次插入都打开.关闭数据库.现在需要插入大量条数据,到底是读一条(网页抓取的)插一条,还是读到一个List中,再统一插入呢?哪样做性能比较好?另外恳请讲下大致原理? 解决方案 解决方案二:使用存储过程插入,然后.大数量,可以分块插入,比如5秒之后插入多少条数据.时间间隔来插入,不要一次性插入!解决方案三:如果你是每次插入都打开.关闭数据库批次插入数据性能会更好解决方案四:批次插入是指?一次插入一批?解决方案五:存到一个list再统一插入比较

大数据正在如何改变数据库格局?

提及"数据库",大多数人会想到拥有30多年风光历史的RDBMS.然而,这可能很快就会发生改变. 一大批新的竞争者都在争夺这一块重要市场,他们的方法是多种多样的,却都有一个共同点:极其专注于大数据. 推动新的数据迭代衍生品大部分都是基于底层大数据的3V特征:数量,速度和种类. 本质上来讲,今天的数据比以往任何时候都要传输更快,体积更大, 同时更加多样化.这是一个新的数据世界,换言之,传统的关系数据库管理系统并没有真正为此而设计. "基本上,他们不能扩展到大量,或快速,或不同种类

ORACLE 系统包

转http://hi.baidu.com/mcj0127/blog/item/2b7a951333416c075aaf538c.html 一.dbms_output作用:用于输入和输出信息,使用过程PUT和PUT_LINES可以将信息发送到缓冲区,使用过程GET_LINE和GET_LINES可以显示缓冲区信息.详细如下:1.enable    该过程用于激活对过程PUT,PUT_LINE,GET_LINE,GET_LINES的调用语法如下:    dbms_output.enable(buffe