Sql Server中的事务介绍
作者:junjie 发布时间:2024-01-22 01:04:37
1.什么是事务:事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是做为最小的控制单元来使用的。
他包含的所有数据库操作命令作为一个整体一起向系提交或撤消,这一组数据库操作命令要么都执行,要么都不执行。
事务是一个不可分割的工作逻辑单元
2.事务的分类.
按事务的启动与执行方式,可以将事务分为3类:
①显示事务 :也称之为用户定义或用户指定的事务,即可以显式地定义启动和结束的事务。分布式事务属于显示事务
②自动提交事务:默认事务管理模式。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。
③隐性事务:当连接以此模式进行操作时,sql将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。它生成连续的事务链。
3.事务的语句
开始事物:BEGIN TRANSACTION(简写tran)
提交事物:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION
注:一旦事务提交或回滚,则事务结束
4.事务的4个特性
①原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,是不可折分的,事务是一个完整的操作。
②一致性(Consistemcy):事物完成时,数据必须是一致的,也就是说,和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。
③隔离性(Isolation):对数据进行修改的多个事务是彼此隔离的。这表明事务必须是独立的,不应该以任何方式来影响其他事务。
④持久性(Durability):事务完成之后,它对于系统的影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库。
5.实例
@@error:全局变量,记录错误号,对错误进行累计
begin tran--开始事务
declare @errorsum int--定义变量记录错误的数量
set @errorsum=0--错误数量默认为0
update dbo.OfficeRent set CreateTime=GETDATE() where Id=2 --持续Sql语句
set @errorsum+=@@ERROR--累计是否有错
update dbo.OfficeRent set Hits+=1 where Id=2 --持续Sql语句
set @errorsum+=@@ERROR--累计是否有错
if @errorsum<>0--判断是否出现错误的情况
begin
print '有错误,回滚'
rollback tran--出现错误,回滚
end
else
begin
print '成功,提交'
commit tran--提交事务
end
6.以下操作不能用事务
创建数据库 create database
修改数据库 alter database
删除数据库 drop database
恢复数据库 restore database
加载数据库 load database
备份日志文件 backup log
恢复日志文件 restore log
更新统计数据 update statitics
授权操作 grant
复制事务日志 dump tran
磁盘初始化 disk init
更新使用sp_configure后的系统配置 reconfigure
猜你喜欢
- 一、绪论在使用python开发过程中经常会使用到第三方库。因此就涉及到了如何安装、复制移动。二、安装方式第三方库的安装方式1、python自
- 训练深层神经网络是十分困难的,特别是在较短的实践内使他们收敛更加棘手。在本节中,我们将介绍批量归一化(batch normalization
- 今天在玩 google earth 4.0b,发现 Print Screen 下来的图片很大,如果直接放在网页上,因为尺寸太大又不合适,又不
- 网页广告 Banner 设计图文手册:采用以下要点来改善你的BANNER。广告并不便宜。 确信你的广告被第一时间读到。使用像这样的Sans
- PyQt5状态栏控件QStatusBar简介MainWindow对象在底部保留有一个水平条,作为状态栏(QstatusBar),用于显示永久
- 列表是什么列表是元素的集合,存储在一个变量中。列表中存储的元素类型没有限制,根据需要动态分配和回收内存列表中的每个元素都会分配一个数字用来表
- Python实现12306火车票抢票系统效果图如下所示:具体代码如下所示:import urllib.request as request
- redis无法访问本机真实ip地址1.我在进行用jedis来连接redis时出现了问题:我用Jedis jedis = new Jedis(
- 一直以来,ACCESS数据库中的申报数据在分公司与总公司之间传递,用EXCEL或DBASE、TXT甚至ACCESS等格式,我总觉得不太理想。
- 科学设计你的网站网页:来自 Eye-Tracking研究的23节必修课 ——Christina Laun在网络设计领域关于Eye-
- 本文实例讲述了Python使用matplotlib实现的图像读取、切割裁剪功能。分享给大家供大家参考,具体如下:# -*- coding:u
- 如下所示:import dateutildef before_month_lastday(ti): today=dateutil
- 软件版本:apache:Apache 2.4.6 Win64 PHP:PHP 5.5 VC11 x64 Non Thr
- 几个月前,我开始学习个人形象管理,从发型、妆容、服饰到仪表仪态,都开始做全新改造,在塑造个人风格时,最基础的是先了解自己属于哪种风格,然后找
- 前提:我训练的是二分类网络,使用语言为pytorchVaribale包含三个属性:data:存储了Tensor,是本体的数据grad:保存了
- 使用groupby([ ]).size()统计的结果,值相同的字段值会不显示如上图所示,第一个空着的行是982499 7 3388 1,因为
- 定义神经网络继承nn.Module类;初始化函数__init__:网络层设计;forward函数:模型运行逻辑。class NeuralNe
- 在实际应用中对于数据进行分析的时候,经常能看见缺失值,下面来介绍一下如何利用pandas来处理缺失值。常见的缺失值处理方式有,过滤、填充。一
- 1.简要概述为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必要的一项技能。分析数据什么最重要?当然是数据,既然如此!在数据呈现
- 前言本文是在GitHub上看到一个大牛总结的前端常见面试题,很多问题问的都很好,很经典、很有代表性。上面没有答案,我就整理了一下,从网上找了