广告
返回顶部
首页 > 资讯 > 数据库 >SQL Server 事务
  • 231
分享到

SQL Server 事务

2024-04-02 19:04:59 231人浏览 薄情痞子
摘要

2、T-sql查询语句 详解事务及锁                        &

2、T-sql查询语句 详解事务

                                           设计者:杨文

                                           防伪码:千淘万浪虽辛苦,吹尽黄沙始到金

SQL Server 通过支持事务机制以保证数据的一致性。

SQL Server 事务

案例:在日常生活中,大家可能使用过银行转账,银行转账操作往往会涉及两个或两个以上的账户。在转出账户的存款减少一定金额的同时,转入账户则会增加相应金额的存款,现在,假定张三的账户转账1000元到李四的账户。该如何实现呢?

1、首先,需要创建账户表bank,存放用户张三和李四的账户信息。我们假设表结构如图

SQL Server 事务

2、账户表中要求账户余额不能少于一元,所以需要为字段currentMoney设置检查约束,设置步骤如下。

首先,打开bank表的设计窗口,在currentMoney字段上右击,在弹出的快捷菜单中选择CHECK约束即可,

如图表示:SQL Server 事务

3、然后,在打开的“CHECK 约束”对话框中,单机“添加”按钮,修改约束名称,并编辑检查约束表达式即可,

如图SQL Server 事务

SQL Server 事务SQL Server 事务

4、如何解决呢?使用事务,转账过程就是一个事务,它需要两条UPDATE语句来完成,这两条语句是一个整体。

如果其中任何一条出现错误,则整个转账业务也应取消,两个账户中的余额应恢复到原来的数据,从而确保转账

前和转账后的余额总和不变,即1001元。

5、理论:

a、什么是事务?

概念

事务是一个不可分割的工作逻辑单元,包括一组命令,这组命令要么都执行,要么都不执行。

b、属性

原子性:事务是一个完整的操作。事务的各元素是不可分的。

一致性:当事务完成时,数据必须处于一致状态。

隔离性:事务是独立的,它不以任何方式依赖于或影响其他事务。

持久性:一旦事务被提交,事务的效果会被永久的保留在数据库中。

6、如何执行事务

a、执行事务的语法

开始事务:BEGIN TRANSACTioN

提交事务:COMMIT TRANSACTION

回滚(撤销)事务:ROLLBACK TRANSACTION

7、事务应用实例

下面我们来应用事务来解决上述转账问题,T=SQL语句如下。

print '查看转账事务前的余额'

select * from bank 

Go

begin transaction

declare @errorsum int

set @errorsum =0

update bank set customermoney =customermoney -1000

where customername ='张三'

set @errorsum =@errorsum +@@ERROR 

update bank set customermoney =customermoney +1000

where customername ='李四'

set @errorsum =@errorsum +@@ERROR 

print '查看转账事务过程中的余额'

select * from bank 

if @errorsum <>0

begin

print '交易失败,回滚事物'

rollback transaction

end

else

begin

print '交易成功,提交事务,写入键盘,永久保存'

commit transaction 

end 

go

print '查看转账事务后的余额'

select * from bank 

go 



交易失败:

SQL Server 事务

交易成功:

SQL Server 事务

8、

认识锁

什么是锁

用于多用户环境下保证数据库完整性和一致性。

锁的模式

共享锁(S锁)

用于读取数据。拥有共享锁的资源不能被修改。

排他锁(X锁)

用于数据修改。与其他任何锁都不兼容。

更新锁(U锁)

用于读取和修改。与S锁兼容,不影响读取;与U锁不兼容,避免死锁

如何查看锁

使用sys.dm_tran_locks动态管理视图

使用Profiler来捕捉锁信息

9、认识死锁          SQL Server 事务

死锁形成的条件:

互斥条件

请求和等待条件

不剥夺条件

环路等待条件


预防死锁:

破坏互斥条件

破坏请求和等待条件

破坏不剥夺条件



您可能感兴趣的文档:

--结束END--

本文标题: SQL Server 事务

本文链接: https://www.lsjlt.com/news/36106.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server 事务
    2、T-SQL查询语句 详解事务及锁                        &...
    99+
    2022-10-18
  • Sql Server中事务的介绍
    这篇文章主要介绍“Sql Server中事务的介绍”,在日常操作中,相信很多人在Sql Server中事务的介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Sql Serv...
    99+
    2022-10-18
  • SQL Server事务日志分析
    SQL Server事务日志分析fn_dblog()和fn_dump_dblog()函数介绍SQL Server有两个未公开的函数fn_dblog()和fn_dump_dblog()非常有用并且提供的信息量...
    99+
    2022-10-18
  • SQL SERVER提交事务回滚机制
    1、回滚语句1: SET XACT_ABORT OFF BEGIN TRAN INSERT INTO score VALUES (101,90) INSERT INTO sc...
    99+
    2022-11-12
  • SQL Server中的事务怎么设置
    这篇文章主要介绍了SQL Server中的事务怎么设置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL Server中的事务怎么设置文章都会有所收获,下面我们一起来看看吧。事务全部是关于...
    99+
    2023-06-30
  • SQL Server 事务处理的基本用法
    SQLServer 中 @@ERROR 测试每一题啊语句的错误。正确时候 @@ERROR  == 0 否则返回错误代码。(1)...
    99+
    2022-10-18
  • SQL Server等待事件—PAGEIOLATCH_EX
    什么是PAGEIOLATCH_EX等待事件? 下面我们将对PAGEIOLATCH_EX等待事件的相关资料做一个简单的归纳、整理。关于PAGEIOLATCH_EX,官方文档的简单介绍如下:   PAGEIOLATCH_EX:   O...
    99+
    2019-06-12
    SQL Server等待事件—PAGEIOLATCH_EX
  • SQL Server中事务与锁的示例分析
    这篇文章将为大家详细讲解有关SQL Server中事务与锁的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一  概述在数据库方面,对于非DBA的程序员来...
    99+
    2022-10-18
  • SQL Server清除事务日志的两种方式
    目录前言方法一方法二前言 我们在数据库维护的时候,经常会查看数据库日志等,但是数据库读写量很大的时候,数据库日志文件也会随之增大,一般情况会设置日志文件最大大小,达到这个大小后,数据库将无法正常操作并记录日志;当然也有图...
    99+
    2023-10-18
    SQL清除事务日志 SQL 事务日志
  • 一文分析SQL Server中事务使用的锁
    目录序SQL Server使用的锁及锁对象SQL Server执行Select时使用的锁SQL Server执行insert时使用的锁SQL Server执行update时使用的锁总结序 本文属于基础知识的回顾...
    99+
    2022-09-02
  • 浅谈 SQL Server 查询优化与事务处理
    之前我们简单了解了各种查询的用法,然而在实际开发中还会用到一些比较高级的数据处理和查询,包括索引、视图、存储过程和触发器。从而能够更好地实现对数据库的操作、诊断及优化。 什么是索引呢,索引是 SQL Ser...
    99+
    2022-10-18
  • 一文分析SQL Server中事务使用的锁
    目录序SQL Server使用的锁及锁对象SQL Server执行Select时使用的锁SQL Server执行insert时使用的锁SQL Server执行update时...
    99+
    2022-11-13
  • SQL Server 事务日志已满,3种解决方案
    我们安装数据库后,系统会默认把数据库文件和数据库日志文件最大设为500MB,当然你中途可以更改这个限制。当日志文件接近最大值时,继续使用数据库会提示:事务日志已满。解决这个问题,有3种方案: 第一种解...
    99+
    2023-09-23
    数据库 golang mysql
  • sql server 2008以上数据库 收缩事务日志
    日志简介SQL Server中的事务日志无疑是SQL Server中最重要的部分之一。因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback)。从而还部分确保了...
    99+
    2022-10-18
  • SQL Server中怎么截断和收缩事务日志
    SQL Server中怎么截断和收缩事务日志,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  当SQL Server截断事务日...
    99+
    2022-10-18
  • sql server
    清空表数据命令 truncate  table User(表名称)  该命令会把标识一起清空 进行重置...
    99+
    2018-09-01
    sql server
  • Sql Server事务语法及使用方法实例分析
    本文实例讲述了Sql Server事务语法及使用方法。分享给大家供大家参考,具体如下: 事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全...
    99+
    2022-10-18
  • SQL Server中怎么实现事务操作隔离模式
    这期内容当中小编将会给大家带来有关SQL Server中怎么实现事务操作隔离模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  1.脏数据读写,这种情况发生在当一个事务...
    99+
    2022-10-18
  • SQL Server -- 下载 SQL Server Data Tools (SSDT)
    https://docs.microsoft.com/zh-cn/sql/ssdt/download-sql-server-data-tools-ssdt SQL Server Data Tools 是一款...
    99+
    2022-10-18
  • SQL-事务
    事务的隔离级别         数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现...
    99+
    2020-11-04
    SQL-事务
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作