sql server事务是什么_spring的事务管理

sql server事务是什么_spring的事务管理SQL Server 中的事务是什么? 事务是应该作为一个单元执行的一组 SQL 语句。这意味着事务确保所有命令都成功或都不成功。如果事务中的命令之一失败,则所有命令都失败,并且在数据库中修改的任何数

SQL Server 中的事务管理

SQL Server 中的事务是什么?

  • 事务是应该作为一个单元执行的一组 SQL 语句。这意味着事务确保所有命令都成功或都不成功。如果事务中的命令之一失败,则所有命令都失败,并且在数据库中修改的任何数据都将回滚。

比如您在做一个银行转账操作,这涉及了2个操作, 扣款和收款, 必须保证这2个操作都成功,或者都失败, 只把你的钱扣了,对方没收到,肯定不行的 (有一个操作失败了,都应该回滚到初始状态)

如何在 SQL Server 中实现事务管理?

SQL Server 为我们提供了4个命令来实现管理事务

  1. 开启事务: begin transaction (可简写为 begin tran, 表示事务已开始)
  2. 提交事务: commit (表示事务已成功完成,自事务开始以来执行的所有数据操作操作都提交到数据库,并释放事务占用的资源。)
  3. 回滚事务: rollback transaction (表示事务失败,会将数据回滚到之前的状态。)
  4. 保存事务: save transaction (这用于将事务划分为多个单元,以便用户有机会将事务回滚到某个点或位置。)

在 SQL Server 中实现事务的示例:

请使用以下 SQL 脚本创建并使用所需的测试数据填充 Product 表。

IF OBJECT_ID("dbo.Product") IS NOT NULL
    DROP TABLE dbo.Product
GO
CREATE TABLE dbo.Product
(
    ProductID INT PRIMARY KEY, 
    Name VARCHAR(40), 
    Price INT,
    Quantity INT
)
GO
INSERT INTO Product VALUES(101, "Product-1", 100, 10)
INSERT INTO Product VALUES(102, "Product-2", 200, 15)
INSERT INTO Product VALUES(103, "Product-3", 300, 20)
INSERT INTO Product VALUES(104, "Product-4", 400, 25)

SQL Server 中的 COMMIT 示例。

BEGIN TRANSACTION
 INSERT INTO Product VALUES (105,"Product-5",500, 30)
 UPDATE Product SET Price = 350 WHERE ProductID = 103
 DELETE FROM Product WHERE ProductID = 103
COMMIT TRANSACTION

一旦提交事务,就不能回滚上述三个语句。提交事务后,现在您的产品将具有以下数据。

ProductID Name Price Quantity
101 Product-1 100 10
102 Product-2 200 15
104 Product-4 400 25
105 Product-5 500 30

SQL Server 中的 ROLLBACK TRANSACTION 示例

SQL Server 中的 Rollback 命令用于撤消尚未保存到数据库中的事务,并从事务开始处恢复到初始状态。因此,如果您想将数据恢复到之前的状态,那么您需要在写入 SQL 语句后的任何时间使用 ROLLBACK 命令,但请记住,一旦写入 COMMIT ,我们就无法回滚数据。

请执行以下语句以了解回滚命令。

BEGIN TRANSACTION
INSERT INTO Product VALUES(106,"Product-6",600, 30)
UPDATE Product SET Price =550 WHERE ProductID = 105
DELETE FROM Product WHERE ProductID = 104

当您执行上述事务并且您可以看到该事务未提交,您有机会使用 Rollback Transaction 命令回滚表上的所有操作。

了解 SQL Server 中的 @@Error 全局变量:

这是一个全局变量,我们可以使用这个变量来检查是否有任何错误。让我们看一个例子来理解这一点。正如您在下面的示例中看到的,首先我们使用 Begin Transaction 语句启动事务。然后我们编写两个插入语句。然后我们使用全局系统变量@@ERROR 检查是否有错误。大于 0 的值意味着存在一些错误。如果有一些错误,那么我们回滚事务,否则我们提交事务。

BEGIN TRANSACTION
    INSERT INTO Product VALUES(110,"Product-10",600, 30)
    INSERT INTO Product VALUES(110,"Product-10",600, 30)
IF(@@ERROR > 0)
    BEGIN
        Rollback Transaction
    END
ELSE
    BEGIN
    Commit Transaction
    END

执行上述事务后,您将看到事务回滚了。这是因为我们尝试在主键列中插入重复值。

为什么我们需要 SQL Server 中的事务?

我们需要 SQL Server 中的事务来保护企业数据(使企业数据保持一致并实现数据完整性)。事务是对数据库的一项或多项更改的传播。例如,如果我们正在创建一条记录或更新一条记录,或者从表中删除一条记录,那么我们正在对表执行事务。控制事务以确保数据完整性和处理数据库错误非常重要。

SQL Server 中事务的经验法则是什么?

SQL Server 中的事务规则告诉事务中的所有语句都应该成功执行,或者这些语句都不执行。

原文地址:https://www.cnblogs.com/broadm/archive/2022/07/12/16470993.html

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

(0)
上一篇 2023-05-26
下一篇 2023-05-26

相关推荐

  • SQLServer 实现简单的省市区联动「建议收藏」

    SQLServer 实现简单的省市区联动「建议收藏」今天研究了一下SQL Server实现省市区联动的方法,记录一下。 一、先创建三个表,Dic_Area(区)、Dic_City(市)和Dic_Province(省),三个表建表语句如下: 1 crea

    2023-03-12
    158
  • Python Tuple: 简单、快速、高效的数据结构

    Python Tuple: 简单、快速、高效的数据结构在编程中,数据结构是最重要的部分之一。虽然Python提供了多种内置的数据类型,但是Tuple是其中最值得关注的。Tuple是一个有序且不可修改的序列。

    2024-03-12
    76
  • Yii redis list列表的使用

    Yii redis list列表的使用redis 的列表允许用户从序列的两端推入或者弹出元素,获取列表元素,以及执行各种常见的列表操作,这里介绍一些常用的列表处理命令,并在 Yii 中的使用。 RPUSH RPUSH:RPUSH key-

    2023-03-06
    135
  • Python面向对象编程Class的应用场景

    Python面向对象编程Class的应用场景面向对象编程(Object-Oriented Programming, OOP) 是一种编程范式,它使用基于对象的方式来组织代码。Python 的面向对象编程可以使用 Class 来实现。Class 是 Python 中面向对象编程的核心,它可以实现面向对象编程中的封装、继承和多态等特性。

    2023-12-15
    112
  • Linux下定时自动备份Docker中所有SqlServer数据库[亲测有效]

    Linux下定时自动备份Docker中所有SqlServer数据库[亲测有效]准备工作 一台Linux(Centos7为例)服务器。 安装Docker服务。 安装并启动SqlServer容器服务。 编写Shell文件 给出一个备份的范例 #!/bin/bash #设置mssql

    2023-06-08
    150
  • mysql主从搭建「终于解决」

    mysql主从搭建「终于解决」mysql主从搭建 环境:ubuntu20.04.1,mysql:8.0.22。 主:192.168.87.3 备:192.168.87.6 安装数据库 sudo apt-get install my

    2023-06-08
    141
  • 周杰伦成就最高的专辑_周杰伦秘密

    周杰伦成就最高的专辑_周杰伦秘密7月14日晚间,周杰伦最新专辑《最伟大的作品》在QQ音乐正式上线,立即成为全网最大的热点事件。作为一张“六年等一回”的新专辑,《最伟大的作品》于7月8日开启预售,截止到7月18日,已在QQ音乐售出超5

    2023-05-27
    137
  • 以Python运行Shell命令

    以Python运行Shell命令在日常的开发和运维过程中,我们经常需要执行一些命令行操作。Shell命令是Linux/Unix操作系统中非常常见的一种命令行操作方式。Python作为一种脚本编程语言,也提供了丰富的执行Shell命令的方式。

    2024-07-05
    53

发表回复

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