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

ORACLE进阶操作

1 事务

事务的任务便是使数据库从一种状态变换成为另一种状态,这不同于文件系统,它是数据库所特用的。

所有的数据库中,事务只针对DML(增删改),不针对select

select只能查看其他事务提交或回滚的数据,不能查看别的事务中正在进行的操作

1.1 事务的特性

  • 原子性(Atomicity)

语句级原子性,过程级原子性,事务级原子性

  • 一致性(Consistency)

状态一致,同一事务中不会有两种状态

  • 隔离性(Isolation)

事务间是互相分离的互不影响

  • 持久性(Durability)

事务提交了,那么状态就是永久的

1.2 开启事务

  • 执行任意的DML语句,会自动开启事务
--语句级:锁定语句所影响的记录行
update dept set loc = 'beijing' where deptno=10;
  • 创建回滚点
--过程级
savepoint a
  • 锁定整张表
select * from 表名 for update

1.3 事务语句

commit=commit work:提交事务.将本次事务中的DML操作全部持久化,并结束本次事务

rollback=rollback work:回滚事务.将本次事务中的DML操作全部取消,并结束本次事务

savepoint:手动开启事务,并创建回滚点

rollback to savepoint:回滚到指定的回滚点前,滚点之后创建的回滚点与DML操作无效

1.4 事务锁

当执行事务操作时,Oracle会在被作用的表上加锁,防止其他用户改表。

Oracle保证读一致性,并且永远都不会脏读(即读其他事务的未提交数据)。

--此时其它会话无法修改改行记录
update dept set loc = 'beijing' where deptno=10;

1.5 提交事务

使用commit语句可以提交事务,当执行了commit语句后,会确认事务的变化,结束事务,删除保存点,释放锁。

当使用commit语句结束事务之后,其他会话将可以查看到事务变化后的新数据。

savepoint a;
update dept set loc = 'beijing' where deptno=10;
--提交事务之后,回滚点被自动删除
commit;

1.6 回退事务

保存点是事务中的一点,用于取消部分事务,当结束事务时,会自动的删除该事务所定义的所有保存点。

update dept set loc = 'beijing' where deptno=10;
savepoint a;
update dept set loc = 'beijing' where deptno=20;
savepoint b;
update dept set loc = 'beijing' where deptno=30;
--回滚后,回滚点a之后执行的语句全部无效,包括回滚点b的创建
rollback to a;
--回滚全部事务,未提交的事务操作全部失效
rollback;

1.7 注意

在ORACLE中没有提供开始事务处理语句,所有的事务都是隐式开始的。也就是说ORACLE中用户不可以显式使用命令来开始一个事务。

ORACLE任务第一条修改数据库的语句,或者一些要求事务处理的场合都是事务隐式的开始。

但是当用户想要处理一个事务处理时,必须显示使用commit和rollback语句结束。

2 序列

3 视图

4 索引

http://www.lryc.cn/news/611958.html

相关文章:

  • 在NVIDIA Orin上用TensorRT对YOLO12进行多路加速并行推理时内存泄漏
  • 完整的登陆学生管理系统(配置数据库)
  • 电商支付异常测试全攻略
  • 013 HTTP篇
  • 秋招笔记-8.6
  • eclipse2023创建工作集
  • 使用python与streamlit构建的空间微生物分析
  • harbor仓库搭建(配置https)
  • 虚幻GAS底层原理解剖五 (AS)
  • 常见的大模型分类
  • #3:Maven进阶与私服搭建
  • 面试问题11
  • 用html写一个类似于postman可以发送请求
  • PyCharm vs. VSCode 到底哪个更好用
  • 面试题:基础的sql命令
  • 使用Nginx部署前后端分离项目
  • AS32S601 芯片 ADC 模块交流耦合测试:技术要点与实践
  • 大前端游戏应用中 AI 角色行为智能控制
  • AdGuard 安卓修改版:全方位广告拦截与隐私保护专家
  • webrtc弱网-OveruseFrameDetector源码分析与算法原理
  • Template 显式实例化 隐式实例化
  • C++之vector类的代码及其逻辑详解 (下)
  • java学习 leetcode24交换链表节点 200岛屿数量 +一些开发任务
  • win10/11网络防火墙阻止网络连接?【图文详解】防火墙阻止连接网络的解决方法
  • 最新教程 | CentOS 7 下 MySQL 8 离线部署完整手册(含自动部署脚本)
  • 【MyBatis新手避坑】详解 `Could not find resource ...Mapper.xml` 错误
  • 从博客到播客:文本转音频的全流程技术点
  • C++ - 仿 RabbitMQ 实现消息队列--网络通信协议设计
  • DOM的XML命名空间革命:从混乱到有序的蜕变
  • IP与MAC地址的区别解析