三大常用关系型数据库事务详解之二:基本事务命令

二、事务基本命令介绍

说明:命令中,

| (垂直条) 分隔括号或大括号中的语法项。 只能使用其中一项。
[ ](方括号) 可选语法项。 不要键入方括号。
{}(大括号) 必选语法项。 不要键入大括号。

 1. SQL SERVER

1) BEGIN { TRAN | TRANSACTION } [ { transaction_name | @tran_name_variable } [ WITH MARK [ 'description' ] ] ] [ ; ]

表示显式地开启一个名称为transaction_name或@tran_name_variable的值的本地事务。

2)BEGIN DISTRIBUTED { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] [ ; ]

表示显式地开启一个名称为transaction_name或@tran_name_variable的值的分布式事务

3)COMMIT [ { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ] [ ; ]

表示提交事务并释放事务使用资源,自事务开始以来的所有数据变更都会成为数据库的永久部分。中括号中内容可以省略,所以COMMIT事务的提交 与COMMIT TRANSACTION功能相同。

4)COMMIT [ WORK ] [ ; ]

提交并结束事务。与COMMIT TRANSACTION 功能相同,但 COMMIT TRANSACTION 接受指定事务名称。 此语法与 SQL-92 兼容。

5)ROLLBACK { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] [ ; ]

表示将事务回滚到起点或者指定保存点,以清除自事务的起点到某个保存点的所有数据更改,并释放相关资源。中括号中内容可以省略,ROLLBACK 事务的回滚与ROLLBACK TRANSACTION功能相同。

6)ROLLBACK [ WORK ] [ ; ]

将事务回滚到事务的起点。与 ROLLBACK TRANSACTION 功能相同,但 ROLLBACK TRANSACTION 可以指定事务名称。此ROLLBACK 兼容 ISO 标准。

嵌套事务时,ROLLBACK WORK 始终回滚到最远的 BEGIN TRANSACTION 语句,并将 @@TRANCOUNT 系统函数减为 0

7)SAVE { TRAN | TRANSACTION } { savepoint_name | @savepoint_variable } [ ; ]

在事务内设置事务保存点。savepoint_name是分配给保存点的名称。@savepoint_variable是包含有效保存点名称的用户定义变量的名称。

8)SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }

设置事务隔离级别。

BEGIN TRANSACTION TR_ACCOUNTTRANSFER;
--A账号中减去1000元
UPDATE [dbo].ACCOUNT] 
  SET AMOUNT = AMOUNT -1000.00
WHERE NAME] = 'A';

B账号中加上1000元
]
  + B;
COMMIT TRANSACTION TR_ACCOUNTTRANSFER;

2. MYSQL

  MySQL 中,只有使用了Innodb数据库引擎的数据库或表才支持事务。

1)START TRANSACTION | BEGIN [WORK]

START TRANSACTIOn或BEGIN [WORK]都用来开启事务。

2)COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

提交当前事务,使自事务开始后的变更成为永久变更。

3)ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

回滚事务到事务起点,取消事务期间的所有变更。

4)SAVEPOINT identifier

在事务中创建指定标识符的保存点

5)ROLLBACK [WORK] TO SAVEPOINT identifier

把事务回滚到指定的事务保存点。

6)RELEASE SAVEPOINT identifier

删除指定的事务保存点。

7)SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL 

{ READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

设置事务隔离等级。

BEGIN
UPDATE ACCOUNT 
  WHERE NAME  ACCOUNT
  COMMIT;

3. ORACLE

   Oracle事务起始于第一条SQL语句的执行,不需要特别指定事务的开始和结束,一个事务结束就意味着下一事务开始。事务终止于下列四种情况:

  • COMMIT或不带有SAVEPOINT子句的ROLLBACK命令。
  • 用户运行DDL命令时,隐式提交。DDL命令如:CREATE,DROP,RENAME,or ALTER。
  • 断开数据库连接时。
  • 客户进程异常终止,导致事务隐式回滚。

1)COMMIT

提交事务中所有更改,结束事务。

2)ROLLBACK

回滚事务中所有更改,结束事务。

3) SAVEPOINT identifier

创建保存点,以便可以事务中更改回滚到这个保存点。

 4)ROLLBACK TO SAVEPOINT identifier

回滚事务中的更改到指定保存点。

5)RELEASE SAVEPOINT identifier

删除指定保存点。

6)SET TRANSACTION [ READ ONLY | READ WRITE ]

[ ISOLATION LEVEL [ SERIALIZE | READ COMMITED ]

[ USE ROLLBACK SEGMENT 'segment_name' ]

[ NAME 'transaction_name' ];

设置事务属性。

COMMIT;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“hive和mysql的区别是什么”,在日常操作中,相信很多人在hive和mysql的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操
这篇“MySQL数据库如何改名”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文...
这篇文章主要介绍“mysql版本查询命令是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql版本查询命令是
本篇内容介绍了“mysql怎么修改字段的内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况...
这篇文章主要讲解了“mysql怎么删除unique约束”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql怎么删...
今天小编给大家分享一下mysql怎么查询不为空的字段的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...
这篇文章主要讲解了“mysql怎么查询字段数量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql怎么查询...
本篇内容主要讲解“如何使用命令行删除mysql数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用命...
这篇文章主要介绍“mysql级联删除功能怎么使用”,在日常操作中,相信很多人在mysql级联删除功能怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
本篇内容主要讲解“mysql中怎么创建和查询外键”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中怎么创建...
这篇文章主要讲解了“mysql密码忘记了怎么修复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql密码
本文小编为大家详细介绍“mysql的转义符怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql的转义符怎么使用”文章能帮助大家解决疑惑,下面跟着小...
本文小编为大家详细介绍“mysql慢查询如何开启”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql慢查询如何开启”文章能帮助大家解决疑惑,下面跟着小编的...
这篇文章主要介绍“mysql的外键如何设置”,在日常操作中,相信很多人在mysql的外键如何设置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,
本篇内容介绍了“mysql常见的中文乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这
本文小编为大家详细介绍“怎么在不同操作系统下更改MySQL的端口号”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在不同操作系统下更改MySQL的端口号”文...
今天小编给大家分享一下如何提高mysql查询效率的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希
这篇文章主要介绍了with as mysql语法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇with as mysql语法是什么文章都会有...
本篇内容介绍了“mysql的DISTINCT怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况...
这篇文章主要讲解了“linux中怎么修改mysql密码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中怎...