Oracle 事务

本文详细介绍了Oracle数据库中的事务处理操作,包括如何开始、提交、回滚事务,以及如何使用保存点来实现部分提交。通过具体示例展示了SET TRANSACTION、COMMIT、ROLLBACK等命令的用法。

1开始一个事物处理:

语法:

SET TRANSACTION {READ ONLY | USE ROLLBACK SEGMENT segment}

例:

SQL> SET TRANSACTION READ ONLY

SQL> SELECT * FROM CUSTOMERS

WHERE Turner';

SQL> COMMIT

我们将在今天的晚些时候来讨论COMMIT 语句这里的SET TRANSACTION READ ONLY 允许你锁定一个记录集直到事务结束

你可以在下列语句中使用READ ONLY 选项

SELECT

LOCK TABLE

SET ROLE

ALTER SESSION

ALTER SYSTEM

选项USE ROLLBACK SEGMENT 告诉ORACLE 数据库提供数据回溯的存储空间段

2结束一个事务处理:

在ORACLE 语法中结束事务处理语句的语法如下

COMMIT [WORK]

[ COMMENT 'text'| FORCE 'text' [, integer] ] ;

它的命令语法与Sybase 的语法是相同的

语法

COMMIT (TRANSACTION | TRAN | WORK) (TRANSACTION_NAME)

COMMIT 命令将保存在一项事务中所进行的所有的改变

在开始一项事务处理之前要先运行COMMIT 命令以确保在之前没有事务未被确认

例如:

SQL> COMMIT;

SQL> SET TRANSACTION READ ONLY;

SQL> SELECT * FROM CUSTOMERS

WHERE Turner';

---Do Other Operations---

SQL> COMMIT;

在ORACLE 中COMMIT 语句的使用方法如下

INPUT

SQL> SET TRANSACTION;

SQL> INSERT INTO CUSTOMERS VALUES("John MacDowell", "2000 Lake Lunge Road", "Chicago", "IL", 42854, 7);

SQL> COMMIT;

取消事务处理

在一个事务处理的过程中常常会运行一些错误检查以确认在过程中是否语句是运行

成功你可以使用ROLLBACK 语句来撤消事务中所做的每一项工作即便工作是成功的

你也可以撤消但是这必须是在COMMIT 之前ROLLBACK 语句必须在一个事务之中

运行它可以一直撤消到事务的开始也就是说数据库会一直返回到事务处理刚开始的

状态在ORACLE 7 中它的语法形式如下

SYNTAX

ROLLBACK [WORK]

[ TO [SAVEPOINT] savepoint

| FORCE 'text' ]

如你所见该命令可以设置事务的SAVEPOINT

SQL> SET TRANSACTION;

SQL> INSERT INTO CUSTOMERS VALUES

("Bubba MacDowell", "2222 Blue Lake Way", "Austin", "TX", 39874, 8);

SQL> ROLLBACK;

在事务中使用保存点

在事务中使用ROLLBACK 可以取消整个的事务但是你也可以在你的事务当中使用

语句进行部分地确认Oracle 中允许你在当前事务中设一个保存点从这一点开始如果你使用了ROLLBACK 命令那么系统将会回到保存点时的状态而在保存点之前的语句将会得到确认在ORACLE 中创建一个保存点的语法格式如下

SAVEPOINT savepoint_name;

下边是使用ORACLE 语法的例子

SQL> SET TRANSACTION

SQL> UPDATE BALANCES SET CURR_BAL = 25000 WHERE ACCOUNT_ID = 5;

SQL> SAVEPOINT save_it;

SQL> DELETE FROM BALANCES WHERE ACCOUNT_ID = 5;

SQL> ROLLBACK TO SAVEPOINT save_it;

SQL> COMMIT;

以上语句结果:保存点save_it前的更改全部更新

SQL> SET TRANSACTION;

SQL> UPDATE BALANCES SET CURR_BAL = 25000 WHERE ACCOUNT_ID = 5;

SQL> SAVEPOINT save_it;

SQL> DELETE FROM BALANCES WHERE ACCOUNT_ID = 5;

SQL> ROLLBACK TO SAVEPOINT save_it;

SQL> ROLLBACK;

以上语句结果:所有更改均未接受,保存点save_it前的更改也撤销

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值