三大常用关系型数据库事务详解之二:基本事务命令「建议收藏」

三大常用关系型数据库事务详解之二:基本事务命令「建议收藏」二、事务基本命令介绍 说明:命令中, | (垂直条) 分隔括号或大括号中的语法项。 只能使用其中一项。[ ](方括号) 可选语法项。 不要键入方括号。{}(大括号) 必选语法项。 不要键入大括号。 1

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

二、事务基本命令介绍

说明:命令中,

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

 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元
UPDATE [dbo].[ACCOUNT]
  SET AMOUNT = AMOUNT + 1000.00
WHERE [NAME] = "B";
COMMIT TRANSACTION TR_ACCOUNTTRANSFER;

代码100分

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 }

设置事务隔离等级。

代码100分BEGIN
--A账号中减去1000元
UPDATE ACCOUNT 
  SET AMOUNT = AMOUNT -1000.00
WHERE NAME = "A";

--B账号中加上1000元
UPDATE ACCOUNT
  SET AMOUNT = AMOUNT + 1000.00
WHERE NAME = "B";
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” ];

设置事务属性。

--A账号中减去1000元
UPDATE ACCOUNT 
  SET AMOUNT = AMOUNT -1000.00
WHERE NAME = "A";

--B账号中加上1000元
UPDATE ACCOUNT
  SET AMOUNT = AMOUNT + 1000.00
WHERE NAME = "B";
COMMIT;

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

(0)
上一篇 2022-12-29
下一篇 2022-12-29

相关推荐

  • 华为云云主机评测:最适合企业的的服务器[亲测有效]

    华为云云主机评测:最适合企业的的服务器[亲测有效]企业云服务器怎么选,要安全、灵活,还有容量大,可以试试这款华为云云主机,华为的技术一直是国内天花板级别的,所以你可以相信华为云云主机的性能。下面对此做个评测: 企业在选择华为云主机遇到的问题: 很多企

    2023-05-11
    127
  • 使用Pycharm安装库的方法

    使用Pycharm安装库的方法Pycharm是一款非常流行的Python开发工具,其内置了丰富的功能和插件,极大地方便了开发者的工作。在使用Pycharm进行开发时,安装库是不可避免的一步,本文将详细介绍使用Pycharm安装库的方法。

    2024-05-15
    54
  • 优化网站布局:Python Grid Span的灵活运用

    优化网站布局:Python Grid Span的灵活运用随着网站页面越来越复杂和多样化,设计师需要更多更灵活的布局方式,以便将不同的元素合理地组合在一起。Python Grid Span是一种非常强大的工具,使得在网站布局中实现跨行和跨列变得轻而易举,并且它适用于所有网站布局,包括响应式布局。

    2024-01-05
    87
  • insert select语句_MySQL insert

    insert select语句_MySQL insertINSERT INTO 和 SELECT 的组合使用

    2023-03-07
    129
  • Python代码:将数字转换为字符串

    Python代码:将数字转换为字符串Python是一门优雅且易读的编程语言,其在数据处理、数据分析、自然语言处理等领域都有广泛应用。其中,将数字转换为字符串是Python程序员在日常工作中常常遇到的问题之一。在Python中,我们可以使用str()函数将数字转换为字符串,并对其进行格式化、操作。

    2024-05-18
    46
  • 以python取非为中心的原始标题

    以python取非为中心的原始标题Python是一门强大的编程语言,其简洁而直观的语法变成了它成为数据科学和人工智能领域最流行的编程语言之一。Python提供了许多工具和技术,使其在各种应用场景中都得到了广泛应用。其中一个非常有用且经常使用的操作是取反,Python中的取反运算符是not,并与常见的逻辑运算符一起使用。在本文中,我们将深入探讨以not为中心的操作,介绍它在Python中的使用和相关技术。

    2024-06-18
    24
  • 莱姆达英文_查询表达式

    莱姆达英文_查询表达式一般查询 db.User.Select(u => u); // 不带条件查询 db.User.Where(u => true); //不带条件查询 db.User.Where(u =&gt

    2023-04-18
    129
  • 提高螺纹连接强度——Python Helicoil Insert

    提高螺纹连接强度——Python Helicoil Insert在机械设计中,螺纹连接是常用的连接方式之一,但在实际应用中,常常出现螺纹损坏导致连接松动等问题。Helicoil Insert是一种有效的螺纹加固解决方案,它可以提高螺纹连接的强度和可靠性,避免因螺纹损坏而导致的松动问题。

    2024-04-03
    55

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注