首批通过分布式安全可靠测评,为关键业务系统打造
事务管理概述
更新时间:2026-06-10 15:37:11
本文主要介绍事务的基本信息和相关控制语句。
事务简介
数据库事务包含了数据库上的一系列操作,事务使得数据库从一个一致的状态转化到另一个一致的状态。通常事务中的 SQL 会包含 DML 语句,也会包含查询语句。如果一个事务中的 SQL 只有查询语句,这个事务通常称为只读事务。
事务在没有提交之前,可以使用 ROLLBACK 命令回滚事务。更多事务相关的说明,请参考 事务简介。
事务控制语句
基本的事务控制语句如下:
BEGIN:显式开启一个事务。此语句在使用过程中可选。租户会话的系统变量
autocommit的值为0时,表示关闭事务自动提交功能,就不需要显式发出BEGIN命令来标识多个 SQL 组成一个事务。租户会话的系统变量
autocommit的值为1时,表示开启事务自动提交功能,该模式下,每条 SQL 都是一个独立的事务。如果要多个 SQL 组成一个事务,可以通过BEGIN命令显式开启一个事务,同时会禁用自动提交功能,直到执行COMMIT或ROLLBACK语句,才会恢复到自动提交模式。
SAVEPOINT:可以在事务过程中标记一个"保存点",事务可以事后选择回滚到这个保存点上。保存点是可选的,一个事务过程中也可以设置多个保存点。COMMIT:提交并结束当前事务,让事务所有修改持久化并生效,清除所有保存点和释放事务持有的锁。ROLLBACK:回滚整个事务已做的修改或者只回滚某个保存点之后事务已做的修改,清除回滚部分包含的所有保存点和释放事务持有的锁。
在 OBClient 命令环境下,可以在 SQL 提示符后发起事务控制命令,也可以修改会话级别的 autocommit 参数来控制事务是否自动提交。
通过
SET autocommit设置变量时,当前会话立即生效,断开链接之后被设置的变量会失效。通过
SET GLOBAL autocommit设置租户级别的变量时,需要断开链接并重新连接才能生效。说明
如果会话中的变量
autocommit的值为0,并且没有显式提交事务,程序异常中断时,OceanBase 数据库会自动回滚最后一个未提交的事务。