PL / SQL 101:定义和管理事务

这篇博客介绍了PL/SQL中的事务管理,包括提交、回滚、保存点和自治交易的概念。事务是数据库处理的一个序列,通过COMMIT保存更改,ROLLBACK撤消自上次提交以来的所有更改。保存点允许部分回滚事务,而自治交易则在错误日志记录等场景中发挥作用。SET TRANSACTION语句用于设置事务的读写模式和隔离级别。
摘要由CSDN通过智能技术生成

如果您有一个只读数据库,则不必担心事务。但是对于你将要构建的几乎所有应用程序,情况并非如此。因此,交易的概念和管理对于您的应用程序的成功至关重要。

事务是Oracle数据库作为一个单元处理的一个或多个SQL语句的序列:要么执行所有语句,要么都不执行。事务隐含地从获取TX锁的任何操作开始:

  • 发出修改数据的语句(例如,插入,更新,删除,合并)
  • 发出SELECT ... FOR UPDATE语句时
  • 使用SET TRANSACTION语句或DBMS_TRANSACTION包显式启动事务时

发出COMMIT或ROLLBACK语句会明确结束当前事务。

本文将介绍如何使用以下语句和功能定义,管理和控制应用程序中的事务:

  • 提交和回滚
  • 保存点
  • 自治交易
  • SET TRANSACTION语句

您可以在下面的事务处理和控制(doc)以及Oracle Live SQL和Oracle Dev Gym资源的链接中找到更多详细信息。

提交和回滚

回想一下事务的定义:“事务是Oracle数据库作为一个单元处理的一个或多个SQL语句的序列:要么执行所有语句,要么都不执行。” 当所有语句都“执行”时,这意味着您已将它们提交或保存到数据库中。

使用COMMIT语句保存所有更改,使其对其他用户可见。请记住:在提交之前,没有人能够看到特定会话中所做的更改。提交后,每个有权访问受影响表的用户现在都可以看到表的新“状态”。

使用ROLLBACK语句撤消自上次提交以来(或自您在会话中启动第一个事务以来)的所有更改。

LiveSQL教程(Oracle Dev Gym上的开发人员数据库课程的一部分)演示了事务管理的这些基本元素。

可是等等!如果您只想撤消会话中的某些更改,但保留其他更改,准备在将来的某个时间点提交,该怎么办?欢迎来到保存点世界。

保存点

保存点允许您回滚部分事务而不是整个事务。每个会话的活动保存点数量不受限制。

回滚到保存点时,标记在该保存点之后的任何保存点都将被删除。回滚的保存点不会被删除。简单的回滚或提交会擦除所有保存点。

保存点名称是未声明的标识符。在事务中重用保存点名称会将保存点从其旧位置移动到事务中的当前点,这意味着回滚到保存点仅影响事务的当前部分。

对于我们之间的递归程序员:如果在递归子程序中标记保存点,则SAVEPOINT语句的新实例在递归下降的每个级别运行,但是您只能回滚到最近标记的保存点。

以下是使用保存点的示例(从同一个LiveSQL教程中提取):

CREATE  TABLE玩具
   toy_id      INTEGER
   toy_name    VARCHAR2100),
   颜色      VARCHAR210
/
 
宣布
   l_count    INTEGER ;
开始
   INSERT  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值