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;
相关文章:
oracle事务的组成
1)数据库事务由以下的部分组成: 一个或多个DML 语句 ; 一个 DDL(Data Definition Language – 数据定义语言) 语句; 一个 DCL(Data Control Language – 数据控制语言)语句; 2)事务的执行开始: 以第一个 DML 语句的执行作为开始 ,…...
第二十八篇 数据获取与数据分析:数仓体系下的专业化分工与协同
声明:文章内容仅供参考,需仔细甄别。文中技术名称属相关方商标,仅作技术描述;代码示例为交流学习用途,部分参考开源文档(Apache 2.0/GPLv3);案例数据已脱敏,技术推荐保持…...
SpringSecurity——前后端分离登录认证
SpringSecurity——前后端分离登录认证的整个过程 前端: 使用Axios向后端发送请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录</title><script src"https://cdn…...
【AI】Orin Nano+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功
1、准备工作 使用 sdk-manager 烧写 OrinNano, JetPack版本为6.0 DP,对应操作系统为:Ubuntu22.04 参见博客:【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04 2、安装 PyTorch 2.1 下载依赖 1)安装onnx pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/sim…...
RHCE 使用nginx搭建网站
一。准备工作 Windows dns映射 创建目录网页 vim 编辑内容 添加如下 重启nginx服务,在Windows浏览器进行测试...
arm linux下的读写信号量rw_semphore的实现
本文基于arm linux 5.10来介绍内核中使用的读写信号量rw remphore的实现代码。 内核中信号量结构体struct rw_semaphore的定义在include/linux/rwsem.h 32位architectures下,结构体struct rw_semaphore中的count的使用如下: 先来看信号量的定义和初始化…...
搭建主从DNS、nfs、nginx
任务需求: 客户端通过访问 www.nihao.com 后,能够通过 dns 域名解析,访问到 nginx 服务中由 nfs 共享的首页文件,内容为:Very good, you have successfully set up the system. 各个主机能够实现时间同步,…...
Qt6+QML实现Windows屏幕录制
前言 Qt6提供了更丰富的多媒体支持类,使用Qt6 QMediaCaptureSession、QScreenCapture、QMediaRecorder,来实现一个屏幕录制的demo,其中QScreenCapture 最低版本 Qt6.5。支持录制的清晰度设置,选择视频保存位置,UI使用…...
python二级每日十题(1)
\ 第一题,在Python中,变量名的命名规则:以字母或下划线开头,后面跟字母、下划线和数字;不能以数字开头.故选c项,博主正确 缩进:在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次&…...
记录一次truncate导致MySQL夯住的故障
目录 环境信息: 故障描述: 处理过程: 原理分析: show processlist结果中的system lock含义: truncate原理: 1. TRUNCATE 的执行流程 2、TRUNCATE 表导致数据库夯住的原因 3、 TRUNCATE 表导致…...
Java Web应用程序实现用户登录、学生信息管理和验证码验证以及页面跳转等基本功能(IDEA)含(Ajax、JSTL)
一、具体框架以及代码功能的展示: 1. 文件结构 web03: 项目根目录。 src: 包含Java源代码。 cn.lvb: 主包。 bean: 包含实体类,如 Book 和 Student。 controller: 包含处理HTTP请求的Servlet类,如 DoLogin, Index, StuList1, VerifyCode。 …...
【Mybatis-plus】在mybatis-plus中 if test标签如何判断 list不为空
博主介绍:✌全网粉丝22W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
MySQL 事务(Transaction)详解
MySQL 事务(Transaction)详解 1. 什么是事务? 事务(Transaction)是一组要么全部执行,要么全部回滚的 SQL 语句,用于保证数据一致性。事务一般用于银行转账、订单支付等操作,确保多个…...
Redis 知识点梳理
第一章 NoSQL数据库发展历史简介 1、 Web的历史发展历程 web1.0时代简介 web 1.0是以编辑为特征,网站提供给用户的内容是网站编辑进行编辑处理后提供的,用户阅读网站提供的内容这个过程是网站到用户的单向行为web1.0时代的代表站点为新浪,…...
github上传操作简单说明
前期准备 0.下载git(如果已经有了就不用了) 1.在GitHub上新建一个存储库 2.先在本地创建一个目录作为本地库目录,在目录里打开git bash进行上传 上传过程 echo "# Garbled_repair" >> README.md 作用:创建一个…...
在 ASP .NET Core 9.0 中使用 Scalar 创建漂亮的 API 文档
示例代码:https://download.csdn.net/download/hefeng_aspnet/90407900 Scalar 是一款可帮助我们为 API 创建精美文档的工具。与感觉有些过时的默认 Swagger 文档不同,Scalar 为 API 文档提供了全新而现代的 UI。其简洁的设计让开发人员可以轻松找到测试…...
针对 pdf.mjs 文件因 MIME 类型错误导致的 Failed to load module script 问题解决方案
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “application/octet-stream”. Strict MIME type checking is enforced for module scripts per HTML spec. pdf.mjs 这种问题该如何处理 nginx 针对 pdf.…...
Flink介绍与安装
Apache Flink是一个在有界数据流和无界数据流上进行有状态计算分布式处理引擎和框架。Flink 设计旨在所有常见的集群环境中运行,以任意规模和内存级速度执行计算。 一、主要特点和功能 1. 实时流处理: 低延迟: Flink 能够以亚秒级的延迟处理数据流,非常…...
《双指针算法指南:LeetCode 经典题解(C++实现)》
《双指针算法指南:LeetCode 经典题解(C实现)》 —— 从快慢指针到对撞指针,刷题效率提升 200%! 常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。 对撞指针: ⼀般⽤于顺…...
kaggle上经典泰坦尼克项目数据分析探索
之前了解在kaggle上这个项目很火,最近想要加强一下python数据分析,所以在kaggle上找到这个项目进行学习探索,下面是将一些学习资料以及过程整理出来。 一、首先我们了解一下项目背景以及如何找到这个项目。 kaggle项目地址: https://www.k…...
【深度学习】多目标融合算法(五):定制门控网络CGC(Customized Gate Control)
目录 一、引言 二、CGC(Customized Gate Control,定制门控网络) 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一、引言 上一…...
Ubuntu上查看GPU使用情况并释放内存
先用nvidia-smi查看GPU当前使用情况 再用fuser 命令查找对应显卡上占用 GPU 的进程 最后查到了用kill -9强制杀掉进程(PID)即可...
大数据学习栈记——HBase安装
本文介绍大数据技术中流行的非关系型数据库HBase的安装,操作系统:Ubuntu24.04 安装Zookeeper 安装HBase前需要先安装Zookeeper,HBase使用Zookeeper作为其分布式协同服务,存储了HBase集群的元数据信息,并提供了分布式…...
[入门]NUC13配置Ubuntu20.04详细步骤
文章目录 1. 安装Ubuntu20.041.1 制作系统启动盘1.1.1 下载镜像文件1.1.2 配置启动盘 1.2 安装内存条、硬盘1.3 安装系统 2. 网卡驱动配置2.1 关闭安全启动2.2 安装intel官方网卡驱动backport2.2.1 第四步可能会出现问题 2.3 ubuntu官方的驱动2.4 重启 3. 软件安装3.1 录屏软件…...
【实战指南】用MongoDB存储文档和图片等大文件(Java实现)
一、前言 在现代应用开发中,经常需要处理和存储大量的文档、图片等大文件。传统的关系型数据库在处理这类大文件时,往往会面临性能瓶颈、存储成本高等问题。而 MongoDB 作为一款流行的 NoSQL 数据库,提供了 GridFS 规范,能够很好地解决大文件存储的问题。GridFS 可以将大文…...
使用Gitee Go流水线部署个人项目到服务器指南
使用Gitee Go流水线部署个人项目到服务器指南 前言!!! 本文解决的问题: 你有一台ECS服务器,你在上面部署了一个Java服务也就是一个jar,你觉着你每次手动本地打包,上传,在通过命令去…...
使用Three.js渲染器创建炫酷3D场景
引言 在当今数字化的时代,3D图形技术正以其独特的魅力在各个领域掀起波澜。从影视制作到游戏开发,从虚拟现实到网页交互,3D场景以其强烈的视觉冲击力和沉浸式的体验,成为了吸引用户、传达信息的重要手段。而Three.js,…...
Spring Boot 集成 Elasticsearch怎样在不启动es的情况下正常启动服务
解释 在spingboot 集成es客户端后,每当服务启动时,服务默认都会查看es中是否已经创建了对应的索引,如果没有索引则创建。基于上面的规则我们可以通过配置不自动创建索引来达到在没有es服务的情况下正常启动服务。 解决办法 在entity类的Docu…...
明远智睿SD2351核心板:多接口融合,破解边缘计算难题
在边缘计算领域,明讯智睿SD2351核心板凭借丰富的接口资源与异构计算架构,成为工业网关与智能终端的理想选择。硬件配置升级 :处理器:四核Cortex-A35,256KB L2缓存,动态调频降低功耗;存储性能:emMC 5.0 HS400模式读写速度提升40%&a…...
xampp安装教程与配置
一、安装 XAMPP (一)下载 访问官网:打开浏览器,访问 XAMPP 官方网站(https://www.apachefriends.org/zh_cn/index.html)。 选择版本:根据你的操作系统(Windows、macOS 或 Linux&am…...
设计模式之单例模式(Singleton Pattern)
单例模式(Singleton Pattern)是一种常用的设计模式,确保一个类只有一个实例,并提供一个全局访问点。单例模式在许多场景中非常有用,例如配置管理、日志记录、线程池等。 ### **1. 单例模式的特点** 1. **唯一实例**&a…...
Androidstudio实现引导页文字动画
文章目录 1. 功能需求2. 代码实现过程1. 编写布局文件2. 实现引导页GuideActivity 3. 总结4. 效果演示5. 关于作者其它项目视频教程介绍 1. 功能需求 1、引导页具有两行文字(“疫情在前”和“共克时艰”),和向上的 图标。 2、进入【引导页】…...
【linux】线程概念与控制
引言 当现代CPU的晶体管密度逼近物理极限,多核架构已成为突破性能瓶颈的必由之路。在这个计算密集型任务与异步IO需求并行的时代,多线程编程不再是可选项,而是开发者必须掌握的核心技能。Linux作为承载着全球90%云计算负载的操作系统…...
Cesium 自定义路径导航材质
cesium 自定义路径导航纹理图片随便更换,UI 提供设计图片即可达到效果; 打开小马的weix 关注下 搜索“技术链” 回复关键词《《路径》》获取原始代码; 拿到就能用轻松解决!帮忙点个关注吧!...
用 pytorch 从零开始创建大语言模型(五):预训练无标注数据
用 pytorch 从零开始创建大语言模型(五):预训练无标注数据 5 预训练无标注数据5.1 评估文本生成模型5.1.1 使用 GPT 生成文本5.1.2 计算文本生成损失5.1.3 计算训练集和验证集的损失 5.2 训练 LLM5.3 解码策略以控制随机性5.3.1 温度缩放&am…...
[AI速读]混合验证方案:如何高效解决RISC-V向量扩展的验证难题
RISC-V作为一种开源指令集架构,近年来在AI和高性能计算领域备受关注。其向量扩展(RVV)为处理并行数据提供了强大的支持,但复杂的异常处理和冒险检测机制也带来了验证上的巨大挑战。本文将结合一篇技术论文,解析一种混合验证方案,帮助开发者更高效地解决RVV的验证问题。 一…...
模型空间、图纸空间、布局(Layout)之间联系——CAD c#二次开发
在 AutoCAD 的二次开发中,**模型空间(Model Space)**、**图纸空间(Paper Space)** 和 **布局(Layout)** 是三个核心概念,它们的关系及开发中的操作逻辑如下: --- 1. 模…...
Linux 日常开发常用命令(解释-全)
帮助类 #查看cd命令的帮助信息 [rootcentos100 ~] help cd # 查看网卡配置信息 [rootcentos100 ~] ifconfig # 检测到目标主机是否连接正常 [rootcentos100 ~] ping IP地址[rootcentos100 ~] ssh [-p port] userremote #远程登录user 是在远程机器上的用户名,如果…...
数据库监控:确保业务连续性和用户体验
在数字化时代,数据库作为企业的数据心脏,其重要性不言而喻。无论是交易系统、客户关系管理系统,还是数据分析平台,都离不开数据库的支撑。然而,数据库的运行状态和性能直接影响着企业的业务连续性和用户体验。因此&…...
Java面试黄金宝典9
1. Redis 持久化机制 Redis 提供了两种主要的持久化机制:RDB(Redis Database)和 AOF(Append Only File),下面对这两种机制进行详细介绍。 RDB(Redis Database) 原理:RDB …...
【C#】WinForm自定义控件及窗体
前言 WinForm(Windows Forms)是Microsoft.NET框架中的技术,用于开发Windows桌面应用程序。它提供了一套丰富的控件和组件。通过拖放控件、编写事件处理程序等方式快速构建用户界面。 通过属性窗口定制这些控件的外观和行为。 通过数据绑定&am…...
VideoHelper 油猴脚本,重塑你的视频观看体验
VideoHelper 油猴脚本,重塑你的视频观看体验 在日常上网看视频时,你是否也被这些问题困扰:视频网站开头的广告又臭又长,找个合适的播放倍速要在一堆选项里翻半天,每次手动调音量、点全屏按钮繁琐又影响沉浸感…...
从收藏夹到知识图谱:书签管理器如何重塑你的信息获取方式?
在信息爆炸的今天,浏览器收藏夹早已沦为 “数字垃圾堆”—— 杂乱无章的网址、重复的标签、过期的链接,不仅降低效率,更成为信息焦虑的源头。智能书签管理器通过AI分类、跨平台同步、隐私保护等黑科技,重塑您的数字生活方式。书签…...
SOFABoot-07-版本查看
前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…...
[极客大挑战 2019]Http_3.19BUUCTF练习day3(1)
BUUCTF练习day3(1)_[极客大挑战 2019]Http 打开靶场,查看源码(如果在做题时没有什么发现就查看源码) 打开Secret.php提示没有来自https://Sycsecret.buuoj.cn 添加Referer头为https://Sycsecret.buuoj.cn(提示说我们没有来自那个网址,那我们…...
golang Error的一些坑
golang Error的一些坑 golang error的设计可能是被人吐槽最多的golang设计了。 最经典的err!nil只影响代码风格设计,而有一些坑会导致我们的程序发生一些与我们预期不符的问题,开发过程中需要注意。 errors.Is判断error是否Wrap不符合预期 …...
弱网测试:全链路实战、高阶策略与自动化落地
在移动互联网时代,网络环境的不确定性成为用户体验的“隐形杀手”。弱网测试不仅是质量保障的必备环节,更是提升用户留存率和业务转化率的战略手段。 本文将从 工具链深度配置、复杂场景模拟、性能优化底层逻辑 和 自动化流水线集成 四个维度,彻底解析弱网测试的完整方法论…...
Ubuntu检查并启用 Nginx 的stream模块或重新安装支持stream模块的Nginx
stream 模块允许 Nginx 处理 TCP 和 UDP 流量,常用于负载均衡和端口转发等场景。本文将详细介绍如何检查 Nginx 是否支持 stream 模块,以及在需要时如何启用该模块。 1. 检查 Nginx 是否支持 stream 模块 首先,需要确认当前安装的 Nginx 是…...
mac brew 安装的php@7.4 打开redis扩展
1. 找到php7.4的pecl目录 一般在这个位置 cd /usr/local/Cellar/php7.4/7.4.33_8/pecl/20190902 ls 一下 有个 redis.so 于是 直接去php.ini编辑了 php.ini的路径 vim /usr/local/etc/php/7.4/php.ini 把938行添加进去 然后重启一下 php7.4 brew services restart ph…...
Redis 内存管理
Redis 内存管理 1. Redis 给缓存数据设置过期时间的作用 给缓存数据设置过期时间(TTL, Time-To-Live)有以下几个重要作用: (1) 自动释放内存 避免缓存数据无限增长,导致 Redis 内存溢出。例如,在 会话管理、短连接…...