前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库事务理解

数据库事务理解

作者头像
程序源代码
发布2018-03-30 16:15:57
8280
发布2018-03-30 16:15:57
举报
文章被收录于专栏:程序源代码程序源代码

事物

本章讲述了三种常见的数据操作语句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 行。

提交完成。

SQL>

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

•以前的数据可恢复

•当前的用户可以看到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;

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

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

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

声明:文章属于个人原创,转载请注明文章出处

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全华班 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档