Oracle PL/SQL开发基础(第二十七弹:事务处理简介)

什么是事务处理

事务(Transaction)是一个由多条SQL语句组成的工作逻辑单元,这些语句要么全部执行成功,要么全部不执行,只要有一条SQL语句执行失败,已执行的SQL语句会全部回滚到执行之前的状态,这样就保证了数据库数据的一致性。

一个事务必须要满足ACID,即原子性、一致性、隔离性和持久性这4个属性。
- 原子性:事务必须是原子工作单元,对其进行的数据修改,要么全部执行,要么全部不执行。
- 一致性:事务在完成时,必须使所有的数据都保持一致状态,即所有的数据都要发生更改,以保证数据的完整性。
- 隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时、运行中间某一时刻的数据。
- 持久性:一旦事务被提交之后,数据库的变化就会被持久地保留下来,即使运行数据局软件的机器后来崩溃也是如此。

PL/SQL提供了如下的语句用于事务的管理:
- COMMIT:保存自上一次COMMIT或ROLLBACK以来的所有改变,并且释放所有的锁。
- ROLLBACK:回滚所有自上一次COMMIT或ROLLBACK以来的所有改变,并且释放所有的锁。
- ROLLBACK TO SAVEPOINT:回滚所有的改变到一个已经保存的保存点,并且释放所有该范围内的锁。
- SAVEPOINT:建立一个保存点,允许完成局部的回滚操作。
- SET TRANSACTION:允许开始一个只读或读写会话,建立一个隔离级别,或者是将当前的事务赋给一个特定的回滚段。
- LOCK TABLE:允许使用特定的模式锁定整个数据库表,这将覆盖默认的行级别的锁定。

使用COMMIT提交事务

COMMIT语法如下:

COMMIT [WORK] [COMMENT text]

可选的WORK仅为了增强可读性,并没有任何其他的作用。可选的COMMENT用来为某个分布式事务添加注释,如果在COMMIT时出现网络或机器故障,Oracle会在数据字典中保存COMMENT提供的文本内容和相关的事务ID,文本内容必须是用引号括起来的长度不超过50个字符的文字,如:

COMMIT COMMENT '在提交订单时出现了错误';

一般用法如:

DECLARE
   dept_no   NUMBER (2) := 70;
BEGIN
   --开始事务
   INSERT INTO dept 
        VALUES (dept_no, '市场部', '北京');               --插入部门记录
   INSERT INTO emp                                        --插入员工记录
        VALUES (7997, '威尔',
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值