事务的定义

简单的说,事务处理可以用来维护数据库的完整性,保证一批SQL语句要么全执行,要么全部不执行

事务的特性

原子性  一致性  持久性  隔离性        注:一元九个

事务的使用

select * from MR_Upload_Manual_Excel where Excel_ID='M000181431'
begin tran --开始事务
declare @count int --声明变量
set @count=0 --变量初始化
update MR_Upload_Manual_Excel set Courier_Company_Full_Name='Test444' where Excel_ID='M000181431'
set @count=@@ROWCOUNT --赋值受影响行数
if(@count=1) --判断受影响行数是否符合预期
begin ----begin... end ...
select * from MR_Upload_Manual_Excel where Excel_ID='M000181431'
commit tran --提交事务
end
else
begin
select '执行出错,事务回滚'
rollback tran ---回滚事务
end

begin tran
declare @count int
set @count=0
update MR_Upload_Manual_Excel set Courier_Company_Full_Name='Test33' where Excel_ID='M000181431'
set @count +=@@ROWCOUNT
update MR_Upload_Manual_Excel set Courier_Company_Full_Name='Test44' where Excel_ID='M000181451'
set @count +=@@ROWCOUNT
if(@count=2)
begin
select * from MR_Upload_Manual_Excel
commit tran
end
else
begin
print '出错'
rollback tran
end

SQL Server中分为局部变量和全局变量

  • 全局变量:名称以@@开头(系统事先定义,用户只读)
  • 局部变量:名称以@开头(用户自己声明和赋值)
SQL Server中的全局变量:

        1、@@CONNECTIONS

        返回自上次SQL启动以来连接或试图连接的次数。

        2、@@CPU_BUSY

        返回自上次SQL启动以来CPU的工作时间,单位为毫秒(基于系统计时器的分辨率)。

        3、@@CURSOR_ROWS

        返回连接上最后打开的游标中当前存在的合格行的数量。

        4、@@DATEFIRST

        返回 SET DATEFIRST 参数的当前值,SET DATEFIRST 参数指明所规定的每周第一天:1 对应星期一,2 对应星期二,依次类推,用 7 对应星期日。

        5、@@DBTS

        返回当前timestamp数据类型的值。这一timestamp值保证在数据库中是唯一的。

        6、@@DEFAULT_LANGID

        返回默认的本地语言标识符(ID)。

        7、@@ERROR

        返回最后执行的SQL语句的错误代码

        8、@@FETCH_STATUS

        返回被fetch语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。

        9、@@IDENTITY

        返回最后插入的标识值。

        10、@@IDLE

        返回自上次SQL启动后闲置的时间,单位为毫秒(基于系统计时器的分辨率)。

        11、@@IO_BUSY

        返回自上次SQL启动后用于执行输入和输出操作的时间,单位为毫秒(基于系统计时器的分辨率)。

        12、@@LANGID

        返回当前所使用语言的本地语言标识符(ID)。

        13、@@LANGUAGE

        返回当前使用的语言名。

        14、@@LOCK_TIMEOUT

        返回当前会话的当前锁超时设置,单位为毫秒。

        15、@@MAX_CONNECTIONS

        返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值 

        16、@@MAX_PRECISION

        返回 decimal和numeric数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。

        17、@@MICROSOFTVERSION

        返回微软用于数据库引擎的SQLServer版本的内部跟踪号。

        18、@@NESTLEVEL

        返回当前存储过程执行的嵌套层次(初始值为 0)。

        19、@@OPTIONS

        返回当前SET选项的信息。

        20、@@PACK_RECEIVED

        返回自上次SQL启动后从网络上读取的输入数据包数目。

        21、@@PACK_SENT

        返回自上次SQL启动后写到网络上的输出数据包数目。

        22、@@PACKET_ERRORS

        返回自上次SQL启动后在SQ连接上发生的网络数据包错误数。

        23、@@PROCID

        返回当前过程的存储过程标识符 (ID) 。

        24、@@REMSERVER

        返回远程SQL Server数据库服务器在登录记录中显示的名称。

        25、@@ROWCOUNT

        返回受上一SQL语句影响的行数。

        26、@@SERVERNAME

        返回运行SQL Server的本地服务器名称。

        27、@@SERVICENAME

        返回SQL正在其下运行的注册表键名。若当前实例为默认实例,则 @@SERVICENAME 返回 MSSQLServer;若当前实例是命名实例,则该函数返回实例名。

        28、@@SPID

        返回当前用户进程的服务器进程标识符 (ID)。

        29、@@TEXTSIZE

        返回SET语句TEXTSIZE选项的当前值,它指定select语句返回的text或imgae数据的最大长度,以字节为单位。

        30、@@TIMETICKS

        返回一刻度的微秒数。

        31、@@TOTAL_ERRORS

        返回自上次SQL启动后所遇到的磁盘读/写错误数。

        32、@@TOTAL_READ

        返回自上次SQL启动后读取磁盘(不是读取高速缓存)的次数。

        33、@@TOTAL_WRITE

        返回自上次SQL启动后写入磁盘的次数。

        34、@@TRANCOUNT

        返回当前连接的活动事务数。

        35、@@VERSION

        返回当前安装SQL Server的日期、版本和处理器类型。

@@ERROR:当前一个语句遇到错误,则返回错误号,否则返回0。

需要注意的是@ERROR在每一条语句执行后会被立刻重置,因此应该在要验证的语句执行后检查数值或者是将它保存到局部变量中以备将来使用。

@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int整性。

--@@ROWCOUNT和@@ERROR变量的值,在执行完一条语句后总是会发生变化,所以我们将他们作为判断的依据的时候应该首先保存在局部变量中。他们反映的都是紧接着的上一条语句对他们的影响!

SQL中事务以及全局变量的使用的更多相关文章

  1. SQL 中事务的分类

    先讲下事务执行流程: BEGIN和COMMIT PRINT @@TRANCOUNT --@@TRANCOUNT统计事务数量 BEGIN TRAN PRINT @@TRANCOUNT BEGIN TRA ...

  2. 存储过程中使用事务,sql server 事务,sql事务

    一.存储过程中使用事务的简单语法       在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 ...

  3. sql server中局部变量与全局变量的 申明与赋值(转)

    来源:http://www.111cn.net/database/mssqlserver/36734.htm 例子:http://www.cnblogs.com/sunxi/p/4497493.htm ...

  4. SQL Server中事务、锁定和阻塞

    事务是什么 在SQL Server中事务是构成一个工作逻辑单元的一系列任务,也就说多个任务放在一起执行,这些任务要么全部执行成功,要么全部执行失败. 通过事务我们可以保证数据的完整性,例如:用户A给用 ...

  5. SQL server中事务的四个属性特征(ACID)

    事务的概念.类型和四个特征(ACID). 1.事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Se ...

  6. 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

    SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列   本文是Stairway系列的一部分:SQL ...

  7. SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志(译)

    SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情 ...

  8. SQL中的全局变量和局部变量(@@/@)

    在SQL中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个SQL语句中的某些元素经常 ...

  9. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

随机推荐

  1. openstack 安装neutron网络服务安装 报错:Unknown operation 'enabled'

     注:这个脚本文件有一个地方是错误的,最后一行需要修改一下 # vim /usr/local/bin/iass-install-neutron-controller-gre.sh # 改systemc ...

  2. 前端知识之CSS(1)-css语法、css选择器(属性、伪类、伪元素、分组与嵌套)、css组合器

    目录 前端基础之css 1.关于css的介绍 2.css语法 3.三种编写CSS的方式 3.1.style内部直接编写css代码 3.2.link标签引入外部css文件 3.3.标签内直接书写 4.c ...

  3. MQ系列4:NameServer 原理解析

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 1 关于NameServer 上一节的 MQ系列3:RocketMQ 架构分析,我们大致介绍了 ...

  4. 三 单例模式【Singleton Pattern】  来自CBF4LIFE 的设计模式

    这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一.独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的 ...

  5. KingbaseES 数据库软件卸载

    关键字: KingbaseES.卸载   一.安装后检查 在安装完成后,可以通过以下几种方式进行安装正确性验证: 1. 查看安装日志,确认没有错误记录; 2. 查看开始菜单: 查看应用程序菜单中是否安 ...

  6. Django 创建 APP和目录结构介绍

    一.通过pip安装Django 以windows 系统中使用pip命令安装为例 win+r,调出cmd,运行命令:pip install django自动安装PyPi 提供的最新版本.指定版本,可使用 ...

  7. ProxySQL 匹配规则

    现实中很多场景要求更新数据能立马查到数据,而主从同步在这方面无解,所以从规则上修改,一些需要及时查询的语句在主上. # 用户登录 mysql -h192.168.0.103 -P16032 -urad ...

  8. 9个常用的Shell脚本

    1.Dos 攻击防范(自动屏蔽攻击 IP) #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2. ...

  9. 不停机为虚拟机添加主机磁盘(以VMware Workstation为例)

    VMware Workstation软件上安装的centos7系统,新增磁盘后使用fdisk -l命令查看不到新增的磁盘,有没有办法在不重启的情况下添加上新磁盘? 有办法 具体如下: # 查看主机总线 ...

  10. MySQL 中 datetime 和 timestamp 的区别与选择

    MySQL 中常用的两种时间储存类型分别是datetime和 timestamp.如何在它们之间选择是建表时必要的考虑.下面就谈谈他们的区别和怎么选择. 1 区别 1.1 占用空间 类型 占据字节 表 ...