当前位置:  数据库>oracle

Oracle_事务控制语句

    来源: 互联网  发布时间:2017-06-23

    本文导语: 事务是对数据库操作的逻辑单位,在一个事务中可以包含一条或多条DML (数据操纵语言)、DDL (数据定义语言)和DCL (数据控制语言)语句,这些语句组成一个逻辑整体。 事务的执行只有两种结果:要么全部执行,把数据库...

事务是对数据库操作的逻辑单位,在一个事务中可以包含一条或多条DML (数据操纵语言)、DDL (数据定义语言)和DCL (数据控制语言)语句,这些语句组成一个逻辑整体。

事务的执行只有两种结果:要么全部执行,把数据库带入一个新的状态,要么全部不执行,对数据库不做任何修改。
对事务的操作有两个:提交( COMMIT )和回滚( ROLLBACK )。

提交事务时,对数据库所做的修改便永久写入数据库。
回滚事务时,对数据库所做的修改全部撤销,数据库恢复到操作前的状态。
事务可用于操作数据库的任何场合,包括应用程序、存储过程、触发器等。

事务具有四个属性,这四个属性的英文单词首字母合在一起就是ACID 。

这四个属性是:
·原子性( Atomicity ):事务要么全部执行,要么全部不执行,不允许部分执行。
·一致性( Consistency ):事务把数据库从一个一致状态带入另一个一致状态。
·独立性( Isolation ):一个事务的执行不受其他事务的影响。
·持续性( Durability ):一旦事务提交,就永久有效,不受关机等情况的影响。
一个事务中可以包含多条DML语句,或者包含一条DDL语句,或者包含一条DCL语句。

事务开始于第一条SQL语句,在下列之一情况下结束:
·遇到COMMIT或ROLLBACK 命令。
·遇到一条DDL或者DCL命令。
·系统发生错误、退出或者崩溃。
总之,事务是一系列可以把系统带入一个新的状态的操作,如果事务被提交,则数据库进入一个新的状态,否则数据库恢复到事务以前的状态。
在数据库中使用事务的好处是首先可以确保数据的一致性,其次在对数据做永久修改之前可以预览以前的数据改变,还可以将逻辑上相关的操作进行分组。
控制事务的方式有两种,一种是隐式控制,数据库管理系统根据实际情况决定提交事务还是回滚事务;
另一种方式是显式控制,在事务的最后放置一条COMMIT或ROLLBACK命令,将事务提交或回滚。
如果是隐式控制,那么事务在遇到一条DDL命令,如CREATE ,或者遇到一条DCL 命令,如GRANT ,或者从SQL *Plus正常退出,即使没有发出COMMIT或ROLLBACK命令,这个事务将被自动提交。
如果从SQL*Plus非正常退出或发生系统崩溃,那么系统将自动回滚事务。
如果是显式控制,那么在事务的最后就要通过COMMIT命令提交事务,或者通过一条ROLLBACK命令回滚事务。

如果事务被提交,那么对数据库所作的修改将写人数据库。

如果回滚事务,一般情况下将回滚到事务的开始,即对数据库不做任何修改。
在Oracle 中,允许部分回滚事务,即可以将事务有选择地回滚到中间的某个点。
部分回滚是通过设置保存点( SAVEPOINT )来实现的。

事务中可以通过SAVEPOINT命令设置若干个保存点,这样可以将事务有选择地回滚到某一个保存点。

用户访问数据库时,数据库中的数据是放在缓冲区中的,当前用户可以通过查询操作,浏览对数据操作的结果。
如果没有提交事务,其他用户是看不到事务的修改结果的。

当一个用户修改表中的数据时,将对被修改的数据加锁,其他用户无法在此期间对该行数据进行修改,直到这个用户提交或回攘这个事务。
如果在事务的最后执行了COMMIT命令,则对数据的修改将被写入数据库,以前的数据将永久丢失,无法恢复,其他用户都可以浏览修改后的结果,在数据上加的锁被释放,其他用户可以对数据执行新的修改,在事务中设置的所有保存点将被删除

如果在事务中设置了保存点,并且在事务的最后执行ROLLBACK命令回滚到某个保存点,那么在此保存点之后的DML语句所做的修改将被丢弃,但是在此保存点之前的DML语句所做的修改仍然没有写入数据库,还可以进行提交或回滚。


    
 
 

您可能感兴趣的文章:

  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • oracle用什么SQL语句判断表存不存在
  • 请问怎么用jsp语句删除oracle中的一条记录?
  • Oracle中SQL语句连接字符串的符号使用介绍
  • Oracle数据库编写有效事务指导方针 iis7站长之家
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • Oracle 9i轻松取得建表和索引的DDL语句
  • Oracle的SQL语句中如何处理‘&’符号
  • 关于Oracle中的sql语句的疑问,向大家请教。
  • Oracle Sql语句长度限制问题及解决
  • Oracle9i取得建表和索引的DDL语句
  • Oracle 中文字段进行排序的sql语句
  • oracle数据库添加或删除一列的sql语句
  • Oracle中查询本月星期5的所有日期列表的语句
  • Oracle中备份表的简单sql命令语句
  • oracle中误删除表后恢复语句(FLASHBACK)
  • Oracle判断指定列是否全部为数字的sql语句
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • Oracle 常用的SQL语句
  • Oracle事务!使用游标提交过程
  • Oracle数据完整性嵌套事务调用分析研究
  • 在oracle下要在同一事务下插入多条记录,该怎么做??最好要有原代码
  • Oracle数据库编写有效事务指导方针
  • Oracle中死事务的检查语句
  • oracle 合并查询 事务 sql函数小知识学习
  • ORACLE数据库事务隔离级别介绍
  • MSSQL与Oracle数据库事务隔离级别与锁机制对比
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在HP Unix 下Oracle的控制和管理
  • Oracle控制文件多元化处理
  • Oracle10g 控制台启动端口修改
  • Oracle中存取控制介绍
  • Oracle并购SUN应放松对MySQL控制
  • Oracle中虚拟专用数据控制方法研究
  • Linux平台下启动oracle 11g EM控制台
  • Oracle 入门之控制文件multiplex
  • 手工创建Oracle数据库控制文件的策略
  • Oracle备份的控制文件和新的数据文件
  • Oracle控制文件的损坏或完全丢失的恢复办法
  • Oracle数据操作和控制语言详解
  • DB2和 Oracle的并发控制(锁)的比较
  • Oracle中基于hint的3种执行计划控制方法详细介绍
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3