网站首页 > 技术文章 正文
喜欢就点击上面蓝色字,更多精彩!
导读 | 精选
事物
本章讲述了三种常见的数据操作语句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;
?保存点能把事务分割成更小的部分。
?保存点允许在任意点阻止工作的进行。
?如果第二个保存点的名字和第一个保存点的名字相同,那么第一个保存点自动失效。
声明:文章属于个人原创,转载请注明文章出处
猜你喜欢
- 2025-07-14 一次性把微服务数据架构事务管理+ACID+一致性+CAP+BASE理论讲清
- 2025-07-14 面试官:来,讲讲Spring事务有哪些坑?
- 2025-07-14 oracle是什么软件?(oracle是什么软件可以卸载吗)
- 2025-07-14 MySQL事务详解(mysql事务用法)
- 2025-07-14 Spring 事务管理详情介绍(spring事务管理方式有几种)
- 2025-07-14 事务的隔离级别?(spring事务的隔离级别)
- 2025-07-14 什么是 SQL 事务,如何创建 SQL 事务
- 2025-07-14 深入理解数据库事务(简述数据库事务的基本概念)
- 2024-10-21 事务的4个特性以及事务的隔离级别有哪些?
- 2024-10-21 【干货】Oracle 9i、10g、11g版本的区别
你 发表评论:
欢迎- 607℃几个Oracle空值处理函数 oracle处理null值的函数
- 601℃Oracle分析函数之Lag和Lead()使用
- 588℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 585℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 580℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 573℃【数据统计分析】详解Oracle分组函数之CUBE
- 563℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 554℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)