当前位置: 首页 > news >正文

oracle事务的组成

1)数据库事务由以下的部分组成:
一个或多个DML 语句 ;
一个 DDL(Data Definition Language – 数据定义语言) 语句;
一个 DCL(Data Control Language – 数据控制语言)语句;
2)事务的执行开始:
以第一个 DML 语句的执行作为开始 ,以下面的其中之一作为结束:
COMMIT 或 ROLLBACK 语句;
DDL 或 DCL 语句自动提交;
3)事务的执行过程
COMMIT:保存自上一次COMMIT或ROLLBACK以来的所有改变。
ROLLBACK:回滚所有自上一次COMMIT或ROLLBACK以来的所有改变。对dml语句进行的操作,都可以进行回退。
ROLLBACK TO SAVEPOINT:回滚所有的改变到一个已经保存的保存点。
4)事务结束的标志:
用户会话正常结束;
系统异常;
5)事务控制语句的设置
Set transaction:设置事务的属性
Set constrains:设置当前事务的约束模式,设置约束是修改数据的时候,立即起作用,还是当前事务结束后应用。
Savepoint :在事务中建立一个存储点,回滚时,可以指定回滚到什么地方,然后重新执行.
Release savepoint:删除一个存储点
Rollback:回滚事务。取消对数据库所做的任何修改
Commit:提交事务,把事务中对数据库的修改进行永久保存
数据异常:因为Oracle中支持多个事务并发执行,所以会出现下面的数据异常。
错读|脏读:当user1正在读数据库中的表A时,user2正在修改表A,user2修改完了,user1又读一遍表A,user1读出的是修改过的数据,而user2又撤消修改了,user1的读取表A,称为错读或者脏读。
非重复读|不重复读:是指一个事务读取数据库中的数据后,另一个事务则更新了数据,当第一个事务再次读取其中的数据时,就会发现数据已经发生了改变,这就是非重复读取。非重复读取所导致的结果就是一个事务前后两次读取的数据不相同。
假读|幻读:如果一个事务基于某个条件读取数据后,另一个事务则更新了同一个表中的数据,这时第一个事务再次读取数据时,根据搜索的条件返回了不同的行,这就是假读。
事务中遇到的这些异常与事务的隔离性设置有关,事务的隔离性设置越多,异常就出现的越少,但并发效果就越低,事务的隔离性设置越少,异常出现的越多,并发效果越高。
选择隔离层
针对读取的数据时产生的不一致现象,在ANSI SQL标准92中定义了4个事务的隔离级别,见表4-1。
表4-1隔离级别
隔离级别 错读|脏读 非重复读|复读 假读|幻读
Read uncommitted(非提交读) 是 是 是
Read committed(提交读) 否 是 是
Repeatable read(可重复读) 否 否
Serializable(串行读) 否 否 否

Oracle默认的隔离级别是read committed 。
Oracle支持上述地址隔离层中的两种read committed和Serializable除此之外Oracle中还设置了read only和read write隔离层 。
Serializable:设置事务的隔离层为它时,事务与事务之间完全隔开,事务以串行的方式执
行。
Read only :事务中不能有任何修改数据库中的数据的操作语句,如insert、update、delete、create语句,read only 是Serializable的子集,区别是read only只读,Serializable和执行DML语句。
Read write:是默认设置,改选项表示在事务中可以有访问语句。修改语句。但不经常使用
设置事务的属性只读 ,代码如下:
Set transaction read noly
设置事务的属性读写 ,代码如下:
Set transaction read write
设置事务隔离级别读取命令,代码如下:
Set transaction isolation level read commnitted
设置事务隔离级别可序列化 ,代码如下:
Set transaction isolation level serializable
【例4-9】建立表plsql101_purchas,插入测试记录。使用保存点,对事务进行回滚,查看每次回退,查询表plsql101_purchas数据。
建立表plsql101_purchas,插入测试记录,代码如下:
–第四章\zsgc.sql

CREATE TABLE plsql101_purchase (
product_name VARCHAR2(25),
quantity NUMBER(4,2),
purchase_date DATE,
salesperson VARCHAR2(3)
);
INSERT INTO plsql101_purchase VALUES
(‘Small Widget’, 1, ‘14-7月-03’, ‘CA’);
INSERT INTO plsql101_purchase VALUES
(‘Medium Wodget’, 75, ‘14-7月-03’, ‘BB’);
INSERT INTO plsql101_purchase VALUES
(‘Chrome Phoobar’, 2, ‘14-7月-03’, ‘GA’);
INSERT INTO plsql101_purchase VALUES
(‘Small Widget’, 8, ‘15-7月-03’, ‘GA’);
INSERT INTO plsql101_purchase VALUES
(‘Medium Wodget’, 20, ‘15-7月-03’, ‘LB’);
INSERT INTO plsql101_purchase VALUES
(‘Chrome Phoobar’, 2, ‘16-7月-03’, ‘CA’);
INSERT INTO plsql101_purchase VALUES
(‘Round Snaphoo’, 25, ‘16-7月-03’, ‘LB’);
INSERT INTO plsql101_purchase VALUES
(‘Chrome Phoobar’, 2, ‘17-7月-03’, ‘BB’);
Commit;

–查询表数据
SELECT * FROM plsql101_purchase;

执行查询后,如图所示4-21。

图4-21第七次执行账户金额

插入3条数据,设置三个保在这里插入图片描述
存点,代码如下:
INSERT INTO plsql101_purchase VALUES
(‘Small Widget21a’, 1, ‘14-7月-20’, ‘CA’);
SAVEPOINT a;
INSERT INTO plsql101_purchase VALUES
(‘Medium Wodget21b’, 75, ‘14-7月-21’, ‘BB’);
SAVEPOINT sp_2;
INSERT INTO plsql101_purchase VALUES
(‘Chrome Phoobar21c’, 2, ‘14-7月-22’, ‘GA’);
SAVEPOINT third;
回退到第一个断点,代码如下:
ROLLBACK TO a;
SELECT * FROM plsql101_purchase;
执行后如图4-22所示。
在这里插入图片描述

图4-22回退到第一个断点

回退到第二个断点,代码如下:
ROLLBACK TO sp_2;
SELECT * FROM plsql101_purchase;

执行后如图4-23所示。
在这里插入图片描述

图4-23回退到第二个断点
回退到整个表,代码如下:
ROLLBACK;

相关文章:

  • uniapp vue3使用uniapp的生命周期
  • 借助AI Agent实现数据分析
  • 触动精灵对某东cookie读取并解密--记lua调用C语言
  • 基于粒子群算法(PSO)栅格地图移动机器人路径规划
  • MySQL错误 “duplicate entry ‘1‘ for key ‘PRIMARY‘“ 解决方案
  • Axure大屏可视化模板:赋能多领域,开启数据展示新篇章
  • AF3 quat_multiply 和 quat_multiply_by_vec 函数解读
  • PostgreSQL用SQL实现俄罗斯方块
  • EasyRTC轻量级Webrtc音视频通话SDK,助力带屏IPC在嵌入式设备中的应用
  • 密码协议与网络安全——引言
  • UE5.5 Niagara 渲染器
  • 从 0 到 1 构建 Python 分布式爬虫,实现搜索引擎全攻略
  • 简述Mybatis的插件运行原理,以及如何编写一个插件?
  • 【Ratis】Ratis Streaming概览
  • win11找不到hosts文件该如何处理
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.21)
  • 以欧洲极端降水归因分析为例讲解CESM模型在降水诊断计算中的科研应用
  • 性能优化中如何“避免链接关键请求”
  • Upwork合同类型:固定价格 vs 按小时收费
  • AI Agent中的MCP详解
  • 英伟达:美国无法操纵监管机构在AI领域取胜,美企应专注创新而不是编造荒诞谣言
  • 跳水世界杯女子单人10米台决赛,陈芋汐、全红婵包揽金银牌
  • 全国铁路旅客发送量连续3天同比增幅超10%,今日预计发送1800万人次
  • 讲座预告|政府在人工智能研究和应用领域的作用
  • 赵厚均评《唐诗与唐代园林景观的审美建构研究》|林泉恣探历,风景暂徘徊
  • 刘洪洁已任六安市委副书记、市政府党组书记