数据库事务理解

事物

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

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

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

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

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

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2018-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏别先生

主要是解决,作为一个数据共享的数据库,存在的数据库统计,然后将计算的数据量输出到自己使用的数据库,进行主页面展示。

1、主要是解决,作为一个数据共享的数据库,存在的数据库统计,然后将计算的数据量输出到自己使用的数据库,进行主页面展示。

992
来自专栏互联网杂技

mysql命令之对用户,库,表操作--基础教程(三)

创建用户: 进入在root用户进行操作: CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; 授权...

34911
来自专栏武培轩的专栏

MySQL存储引擎

定义 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定...

3574
来自专栏架构之路

mysql 通过慢查询日志查写得慢的sql语句

MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含...

3704
来自专栏Java架构沉思录

听说你还不会看MySQL慢查询日志?

MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。

981
来自专栏喵了个咪的博客空间

原 EMQ百万级MQTT消息服务(ACL鉴权)

虽然EMQ已经搭建起来了,但是投入到业务使用中还面临着一些问题,当然MQTT设计之初也考虑了这一点,比如不是任何一个客户端都能链接到服务器和限制客户端能够对to...

5604
来自专栏nummy

python中MySQLdb模块用法实例

MySQLdb提供了connect方法用来和数据库建立连接,接收数个参数,返回连接对象:

811
来自专栏散尽浮华

mysql操作命令梳理(4)-grant授权和revoke回收权限

在mysql维护工作中,做好权限管理是一个很重要的环节。下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke; g...

2845
来自专栏抠抠空间

MySQL之库操作

一、库的简介 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等 per...

2785
来自专栏程序你好

MySQL数据优化总结-查询备忘录

1302

扫码关注云+社区

领取腾讯云代金券