暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于事务控制语句

SQL新手 2022-12-08
431

本文介绍了事务的基本信息和相关控制语句。

事务简介

数据库事务包含了数据库上的一系列操作,事务使得数据库从一个一致的状态转化到另一个一致的状态。通常事务中的 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 数据库会自动回滚最后一个未提交的事务。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论