首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库事务理解

事物

本章讲述了三种常见的数据操作语句Insert /Update / Delete的基本语法,也提到了Oracle9i新的数据操作语句 – Merge的作用和用法,通过一些例子描述了这些DML语言的使用方法。另外,在本章也讲解了事物控制语句的基本概念和语句,对使用事务管理成组的数据操作进行了详细讲解。

一、什么是事务?事物概念

1、事务是由一串修改数据库的操作组成的。

Oracle中有三种事务:

DML(数据操作)事务、DDL(数据定义)事务、DCL(权限控制)事务。

DML事务是一些DML语句组成的,Oracle把事务作为单个实体或逻辑工作单元来处理;

DDL事务只能由一条DDL语句组成。

2、事务的执行必须是完整的

也就是说事务处理中一部分提交给数据库而其他部分不提交这是不允许的。对于事务来说,要么事务中所有处理都提交,要么所有的处理都放弃。

3、事务是以可执行的DML或DDL命令开始,以下面的情况结束:COMMIT/ROLLBACK

DDL、DCL命令(DDL语句是自动提交)

一些错误(如死锁)

注销(如退出SQL*Plus)

硬件错误

二、数据库的事务处理

数据库的事务由下列语句组成:

•一组DML语句,修改的数据在他们中保持一致

•一个 DDL (Data Define Language) 语句

•一个 DCL (Data Control Language)语句

三、数据库的事务(一)

开始于第一个执行的语句

结束于:

COMMIT 或 ROLLBACK

DDL or DCL 语句

某些错误,或者用户退出

系统崩溃

四、数据库的事务(二)

•Commit用于提交数据库的改变,通过commit提交结束事务,事务中的数据将被确定下来,保存到文件。

•Rollback 用于回滚数据改变,就是放弃事务中的所有数据改变,整个数据回到事务最开始的地方。

五、数据库的事务(三)

COMMIT和 ROLLBACK的优点:

保证数据一致性

在数据永久性生效前重新查看修改的数据

相关逻辑操作单元

六、数据库的事务(四)

事务的自动处理

当下列情况发生时事务自动提交:

执行一个 DDL 语句

执行一个DCL 语句

从 SQL*Plus正常退出

当从SQL*PLUS中强行退出或系统失败时,事务自动回滚

七、Sqlplus的自动提交

在sqlplus中有一个与事务相关的环境变量--Autocommit,如果这个参数被启

用,在sqlplus中的所有修改将在执行时自动提交。启动方法是在sqlplus中

执行setautocommit on命令

SQL>select * from t;

未选定行

SQL>show autocommit;

autocommit OFF

SQL>set autocommit on

SQL>insert into t values (1,default);

已创建 1 行。

提交完成。

八、提交或回滚前数据的状态

•以前的数据可恢复

•当前的用户可以看到DML操作的结果

•其他用户不能看到DML操作的结果

•被操作的数据被锁住,其他用户不能修改这些数据

九、提交后数据的状态

•数据的修改被永久写在数据库中。

•数据以前的状态永久性丢失。

•所有的用户都能看到操作后的结果。

•记录锁被释放,其他用户可操作这些记录。

•所有的 savepoints被去掉。

十、回滚后数据的状态

语句将放弃所有的数据修改。

修改的数据被回退。

恢复数据以前的状态。

行级锁被释放。

SQL>DELETE FROM employee;

147 rows deleted.

SQL>ROLLBACK;

Rollback complete.

十一、回退到指定的标记点上

通过存储点在当前的事务中创建标记点

可回退到存储点指定的标记点

SQL>UPDATE...

SQL>SAVEPOINT undo1;

Savepoint created.

SQL>INSERT...

SQL>ROLLBACK TO undo1;

Rollback complete.

•Updateemp•

Set sal =1000;

•Savepoint undo1;

•Deletedept

•Wheredeptno>150;

•Savepoint undo2;

•Rollbackto undo1;

•保存点能把事务分割成更小的部分。

•保存点允许在任意点阻止工作的进行。

•如果第二个保存点的名字和第一个保存点的名字相同,那么第一个保存点自动失效。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180313G0PK1P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券