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

简介: 我们知道oracle中是以事务为单位进行数据库的更改操作的。那么oracle是在什么时机来提交的呢?对于DML语句,oracle不会自动提交事务,直到有一条commit或者rollback命令来处理时才会将改动反应到数据库里。

我们知道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回滚点。

目录
相关文章
|
7月前
|
SQL Oracle 关系型数据库
DDL、DML和DCL的区别与理解
DDL、DML和DCL的区别与理解
229 1
DDL、DML和DCL的区别与理解
|
6月前
|
SQL 数据库
DML的有关方法,练习
DML的有关方法,练习
|
4月前
|
SQL 存储 安全
DDL、DML、DCL 的区别
【8月更文挑战第1天】
217 0
DDL、DML、DCL 的区别
|
SQL 数据库
DML
DML
37 0
|
SQL 存储 Java
|
SQL 关系型数据库 MySQL
DDL--DML
DDL--DML
147 0
|
SQL Oracle 关系型数据库
DDL会产生两次commit操作
DDL操作为什么需要两次commit操作呢?
|
SQL 存储 关系型数据库
|
SQL 关系型数据库 PostgreSQL