拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. 技术学习系列
  3. WERN_ORACLE培训
  4. 正文

第16部分 oracle11g中的事务

2020年4月8日 809点热度 0人点赞 0条评论

一、目标

理解事务的四个属性的含义

掌握oracle11g中事务操作的三个命令

掌握JAVA中进行oracle11g事务处理的方式,主要指JDBC中进行是否自动提交、设置保存点的方法

二、什么是事务

    事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作。

    这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。 

    事务是一个不可分割的工作逻辑单元。 

    例如:

    银行转账过程就是一个事务。它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任一条出现错误,则整个转账业务也应取消,两个账户中的余额应恢复到原来的数据。

三、事务的特性

事务必须具备以下四个属性,简称ACID 属性:

1、原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行

2、一致性(Consistency):

   (1)当事务完成时,数据必须处于一致状态(一条select语句在10:00查询sno值,(假如当前值为1),到10点30分才能查询出来;那如果10点20有update语句插入,将sno=1改为了sno=100。

   (2)那第一条select语句语句在10点30分钟查出来后,应该是1还是100。答案是1,。这就是一致性原理。

   (3)一致性原理,在第一次select时,已经锁定了此张表当前时刻的状态(相当于一个快照),select会执行那个时刻的信息。所以不受后面数据插入的影响。

3、隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务

    (1)A操作:update student set sage=1 where sno=1;另一个B操作同样执行此语句:update student set sage=1 where sno=1;

    (2)如果A先执行,如果没有commit或rollback,那么B操作会一直在等待

    (3)如果A执行完了,B马上操作执行

4、永久性(Durability):事务完成后(commit),它对数据库的修改被永久保持,事务日志能够保持事务的永久性

四、oracle 11g事务的命令

1、Sql Server中使用下列语句来管理事务:

    开始事务:BEGIN TRANSACTION

    提交事务:COMMIT TRANSACTION

    回滚(撤销)事务:ROLLBACK TRANSACTION

2、Oracle11g中的事务相关的命令:commit    savepoint   rollback

    (1)savepoint点和rollback的用法;rollback时,回退到第一个保存点后,就不能回退到第二个保存点。如果此时推出sql后,再进入,所有保存点都不存在了。相当于已经rollback或commit了

image.png

image.png

    (2)

3、Sql*plus中,设置是否自动提交:set autocommit on|off——貌似不好用,奇怪了


五、JAVA中进行oracle11g的事务处理

    1,默认是自动提交。

    2,开启事务使用setAutoCommit(false),这样可以避免自动提交。

    3,通过Savepoint接口来声明保存点。


image.png

六、JAVA中事务处理的例子1

题目1:

create table yggz(code int, salary number(7,2));

insert into yggz values(1, 1000);

insert into yggz values(2, 150);

commit;

完成任务:

如果1号员工的salary多于300元,则从1号员工的salary中减少300元,同时加到2号员工的salary上。 

image.png

七、JAVA中事务处理的例子2

题目2:

create table yggz(code int, salary number(7,2));

insert into yggz values(1, 1000);

insert into yggz values(2, 150);

commit;

完成任务:

如果1号员工的salary多于300元,则从1号员工的salary中减少300元,同时加到2号员工的salary上,是还要确保转账后的1号员工的salary多于转账后的2号员工的salary。

image.png

image.png

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年4月9日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号