欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/
本文主要介绍事务的基本信息和相关控制语句。
事务简介
数据库事务包含了数据库上的一系列操作,事务使得数据库从一个一致的状态转化到另一个一致的状态。通常事务中的 SQL 会包含 DML 语句,也会包含查询语句。如果一个事务中的 SQL 只有查询语句,这个事务通常称为只读事务。
事务在没有提交之前,可以使用 ROLLBACK 命令回滚事务。
事务控制语句
基本事务控制语句如下:
BEGIN:显式开启一个事务。此语句在使用过程中可选:
当租户会话的系统变量
autocommit的值为0时,表示关闭事务自动提交功能,不需要显式发出BEGIN命令来标识多个 SQL 组成一个事务。。当租户会话的系统变量
autocommit的值为1时,表示开启事务自动提交功能,该模式下,每条 SQL 都是一个独立的事务。如果要多个 SQL 组成一个事务,可以通过BEGIN命令显式开启一个事务,同时会禁用事务自动提交功能,直到执行COMMIT或ROLLBACK语句后,才会恢复到自动提交模式。
SAVEPOINT:在事务过程中标记一个"保存点",事务可以事后选择回滚到这个点。保存点是可选的,一个事务过程中也可以有多个保存点。
COMMIT:提交并结束当前事务,让事务所有修改持久化并生效,清除所有保存点和释放事务持有的锁。
ROLLBACK:回滚整个事务已做的修改或者只回滚某个保存点之后事务已做的修改,清除回滚部分包含的所有保存点和释放事务持有的锁。
在 obclient 命令环境下,可以在 SQL 提示符后发起事务控制命令,也可以通过修改 Session 级别的 autocommit 变量来控制事务是否自动提交。
通过
SET autocommit设置变量时,当前会话立即生效,断开链接之后被设置的变量会失效。通过
SET GLOBAL autocommit设置租户级别的变量时,需要断开链接才生效。说明
如果当前 Session 的
autocommit值为0,并且没有显式的提交事务,程序异常中断时,OceanBase 数据库会自动回滚最后一个未提交的事务。
欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/




