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

主要观点:对于只读数据库无需担心事务,但大多数应用需考虑事务,事务管理对应用成功很关键。事务是一组 SQL 语句视为一个单元,可通过 COMMIT 或 ROLLBACK 结束,还可使用 SAVEPOINTS、AUTONOMOUS TRANSACTIONS 和 SET TRANSACTION 语句来管理事务。

关键信息:

  • 事务开始情况:修改数据的语句、SELECT...FOR UPDATE 语句、使用 SET TRANSACTION 语句或 DBMS_TRANSACTION 包显式开始事务。
  • COMMIT:保存所有更改并对其他用户可见。
  • ROLLBACK:回滚自上次提交或会话开始的所有更改。
  • SAVEPOINTS:可回滚部分事务,活动 savepoints 数量无限制,回滚到 savepoint 会清除其后的 savepoints。
  • AUTONOMOUS TRANSACTIONS:用于在一个事务中只保存部分更改,如错误日志记录,在程序声明部分添加 PRAGMA AUTONOMOUS_TRANSACTION 语句,未保存更改会引发异常。
  • SET TRANSACTION:用于设置事务为只读或读写、隔离级别等,Oracle 支持 Read Committed 和 Serializable 两种隔离级别,Read Committed 是默认模式,使用多版本并发控制,Serializable 模式下数据库仿佛只有一个用户,可避免其他事务修改。

重要细节:

  • 用示例展示了 COMMIT、ROLLBACK、SAVEPOINTS 的使用,如创建表并进行插入、回滚到 savepoint 等操作。
  • 给出了 AUTONOMOUS TRANSACTIONS 在错误日志记录程序中的示例,包括创建包体和脚本演示其效果。
  • 通过 SET TRANSACTION 语句的示例展示了只读事务和不同隔离级别的使用及结果,如查询和更新操作。
  • Chris Saxon 的 LiveSQL 模块涵盖了这些主题及更多内容。
阅读 1
0 条评论