DML需手动提交事务,DCL和DDL自动提交事务

我们知道oracle中是以事务为单位进行数据库的更改操作的。那么oracle是在什么时机来提交的呢?对于DML语句,oracle不会自动提交事务,直到有一条commit或者rollback命令来处理时才会将改动反应到数据库里。而对于DDL和DCL,oracle会马上提交,也就是说一执行完这两类语句,就会反应到数据库中,还有一种情况是,前面执行的DML没有被手动提交,执行完DDL或者DCL后,oracle也会将DML对与数据的改动提交到数据库中去。

oralce的事务开始于第一条DML语句,结束于下面几种情况

  1. 一条显式的COMMIT或者Rollback命令
  2. 一条DDL或者DCL语句
  3. 用户退出SQL*plus或者SQL*plussheet 或者iSQL*plus
  4. 系统崩溃

这种Commit和rollback机制的好处是:

  1. 保证了数据的一致性
  2. 在数据永久改变之前可以预览数据
  3. 可以将逻辑上的一组操作一起提交到数据库。我们经常需要保证表1和表2的数据一致,要么同时插入,要么同时不插入。使用这种Commit和rollback机制就非常方便。

这样我们就要在脑子里形成这样一个印象,oracle会在我们执行了DCL或者DDL时,或者正常退出SQL*plus相关工具时,进行隐式的commit操作,而在系统崩溃时,或者非正常退出SQL*plus相关工具时是会自动的回滚数据,执行rollback操作的。

还需要说明的是只要事务没有完成,你所操作的数据是被锁定的,除了你之外的其他用户,是查询不到的你所做的更改的,也是无法进行更新或者删除操作的,如果其他用户试图操作这些数据,将会被迫等待,这时往往造成机器死机,直到你把相关的数据提交或者回滚。

在oracle中我们也还可以进行语句级的回滚操作,这时我们需要定义savepoint回滚点。

时间: 2024-09-20 06:43:15

DML需手动提交事务,DCL和DDL自动提交事务的相关文章

伪静态IIS7发布后需手动改为html,iis配置无效

问题描述 伪静态IIS7发布后需手动改为html,iis配置无效 web.config配置好了,IIS也配置了,可是还是需要手动将aspx手动改为html不能自动转化 解决方案 http://www.cnblogs.com/yoyiorlee/archive/2010/02/01/1661371.html 解决方案二: 说明你的配置有问题,参考: http://jingyan.baidu.com/article/67508eb4ff92c69cca1ce49a.html 解决方案三: 天知道你是

需要一个隐藏在图形中的验证码, 用户需手动敲入才可SUBMIT FORM. 可有相关的控件?

问题描述 在ASP.NET中制作一个调查统计页面,需要一个隐藏在图形中的验证码,用户需手动敲入才可SUBMITFORM.可有相关的控件? 解决方案 解决方案二:假设你的验证码的textbox的id为:txtValicode<formonsubmit="if(document.getElementById('txtValicode').value.length<=0){returnfalse;}"解决方案三:就这么一个功能不需要控件吧,自己组合组合就行了.解决方案四:我的意思

android 程序运行-eclipse中android模拟器运行项目,需手动才能看到结果

问题描述 eclipse中android模拟器运行项目,需手动才能看到结果 如题!!!!!!!!!!!!!!!!!!!!!!! eclipse中android模拟器运行源程序,run as 之后,只是安装apk文件,仍需手动点击才能看到结果,为何? run as 之后console一直处于如下状态 [2014-03-06 17:27:44 - investly_android_phone] Installing investly_android_phone.apk... [2014-03-06

sqlserver禁止management studio的自动提交事务_MsSql

自动提交事务 默认management studio是自动提交事务,即一个语句就一个事务. 隐式事务 打开Sql Server Managerment Studio,登陆到实例当中. Tools -> Options Query Execution -> SQL Server -> ANSI 将SET IMPLICIT_TRANSACTIONS前打上勾 这样,当一个事务结束,新的语句会自动开启一个新的事务.此为隐式事务.事务最终也是通过我们的commit或rollback来结束. 显式事

sqlserver禁止management studio的自动提交事务

自动提交事务 默认management studio是自动提交事务,即一个语句就一个事务. 隐式事务 打开Sql Server Managerment Studio,登陆到实例当中. Tools -> Options Query Execution -> SQL Server -> ANSI 将SET IMPLICIT_TRANSACTIONS前打上勾 这样,当一个事务结束,新的语句会自动开启一个新的事务.此为隐式事务.事务最终也是通过我们的commit或rollback来结束. 显式事

AngularJS实现表单手动验证和表单自动验证_AngularJS

AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证.一.手动验证 所谓手动验证是通过AngularJS表单的属性来验证.而成为AngularJS表单必须满足两个条件: 1.给form元素加上novalidate="novalidate": 2.给form元素加上name="theForm",如下: <!DOCTYPE html> <html lang="en" ng-app="myApp1"

PostgreSQL 按需切片的实现(TimescaleDB插件自动切片功能的plpgsql schemaless实现)

标签 PostgreSQL , schemaless , 自动切片 , track_count , 计数器 , udf , plpgsql , timescaledb 背景 TimescaleDB是PostgreSQL的一款时序数据库插件,其中自动切片是一个非常深入人心的功能. http://www.timescale.com/ 实际上PostgreSQL plpgsql也可以实现类似的功能,当然,前提是需要使用schemaless的模式. schemaless的设计思路和应用举例: <Post

手动创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)

我在部署ASP.net应用程序的时候,在IIS中都是创建在默认的应用池当中.我们能否在部署的时候创建 自己的应用池呢? 本文就带你一起创建自己的应用池! 1 using System; 2 using System.IO; 3 using System.DirectoryServices; 4 using System.Reflection; 5 using System.Runtime.InteropServices; 6 using System.Collections; 7 8 names

sql语言分类和编写规则

1.数据查询语言(select语句):用于检索数据库数据 2.数据操纵语言(Data Manipulation Language,DML):用于改变数据库数据,包括insert,update和delete三条语句 3.事务控制语言(Transactional Control Language,TCL):用于维护数据的一致性, 包括commit,rollback和savepoint三条语句.其中commit语句用于确认已经进行的数据库改变,rollback语句用于取消已经进行数据库改变,而save