找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

342

积分

0

好友

43

主题
发表于 前天 14:06 | 查看: 6| 回复: 0

Image

在Oracle数据库的事务管理中,SAVEPOINT 是一个用于设置部分回滚点的重要命令。对于以下两个关于SAVEPOINT的陈述,正确的选项是?

A、回滚到SAVEPOINT可以撤销DELETE语句 B、在一个事务中只能发出一个SAVEPOINT C、回滚到SAVEPOINT可以撤销TRUNCATE语句 D、SAVEPOINT 不会执行 COMMIT 操作 E、回滚到SAVEPOINT可以撤销CREATE INDEX语句

核心机制解析

SAVEPOINT 的作用是在一个长事务中标记一个“存档点”。其核心行为是:

  • 不会结束当前事务:执行SAVEPOINT sp1;命令本身并不会提交或回滚事务,事务依然处于活跃状态。因此,D选项“SAVEPOINT 不会执行 COMMIT 操作”是正确的
  • 支持部分回滚:后续可以通过ROLLBACK TO sp1;将数据状态回滚到设置该保存点时的样子,但此操作不会结束整个事务,回滚后事务仍可继续执行其他操作。
  • 数量无限制:在一个事务内,可以声明多个不同的SAVEPOINT,因此B选项“在一个事务中只能发出一个SAVEPOINT”是错误的

选项逐项辨析

了解 Oracle 中不同 SQL 语句的事务特性,是理解SAVEPOINT适用范围的关键。

  • A. 回滚到SAVEPOINT可以撤销DELETE语句正确DELETE属于标准的DML(数据操纵语言)操作,在事务范围内执行,可以被SAVEPOINT捕获并回滚。
  • C. 回滚到SAVEPOINT可以撤销TRUNCATE语句错误TRUNCATE是DDL(数据定义语言)语句。在Oracle中,执行DDL语句会触发一个隐式的提交(COMMIT),该提交会立即生效并结束前一个事务。由于事务已经结束,其前后的SAVEPOINT也随之失效,因此无法回滚。
  • E. 回滚到SAVEPOINT可以撤销CREATE INDEX语句错误CREATE INDEX同样属于DDL语句。与TRUNCATE同理,DDL语句的隐式提交特性使得它不在SAVEPOINTROLLBACK的控制范围之内。关于数据库对象的定义操作,通常需要更谨慎的事务规划。

总结

因此,正确的两个陈述是 AD

SAVEPOINT是进行精细化和复杂数据库事务控制的有效工具,但它主要作用于DML操作。理解DDL语句的隐式提交特性,是避免事务控制逻辑错误的关键。




上一篇:Java Stream API性能陷阱剖析与实战避坑指南
下一篇:微信小程序F12开发者工具实战指南:新版与旧版调试方法详解
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-7 00:24 , Processed in 0.070817 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表