SQLServer事务
指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)由多个sql语句组成,必须作为一个整体执行
这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行
语法步骤:
开始事务:BEGIN TRANSACTION    --开启事务
事务提交:COMMIT TRANSACTION   --提交操作
事务回滚:ROLLBACK TRANSACTION --取消操作
--建表
CREATE TABLE [Person](
[PersonId] NVARCHAR(100) PRIMARY KEY , ---主键
[PersonName] NVARCHAR(100) NULL
)
/*
如果只有Begin TransAction和Commit TransAction 就算报错了,也是不会回滚的
Select * From Person
*/
Begin TransAction
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name3')
Commit TransAction /*
如果只有Begin TransAction和RollBack TransAction 就算没报错了,还是会回滚的
Select * From Person
*/
--清除数据
Delete Person
Begin TransAction
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name3')
RollBack TransAction /*
SET XACT_ABORT ON时,在事务中,若出现错误,系统即默认回滚事务,但只对非自定义错误有效
SET XACT_ABORT OFF,默认值,在事务中,回滚一个语句还是整个事务视错误的严重程序而定,
用户级错误一般不会回滚整个事务 Select * From Person
*/
SET XACT_ABORT ON -- 打开
Begin TransAction
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name3')
Commit TransAction
SET XACT_ABORT OFF -- 关闭 /*
Try Catch 配合事务使用
Select * From Person
*/
Begin Try
Begin TransAction
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name1')
Insert Into Person(PersonId,PersonName)Values('','Name3')
Commit TransAction
End Try
Begin Catch
Rollback TransAction
End Catch /*
使用全局变量@@Error 配合事务使用
Select * From Person
*/
DECLARE @tran_error int;
SET @tran_error = 0;
Begin TransAction
Insert Into Person(PersonId,PersonName)Values('','Name1')
SET @tran_error = @tran_error + @@ERROR;
print(@tran_error);
Insert Into Person(PersonId,PersonName)Values('','Name1')
SET @tran_error = @tran_error + @@ERROR;
print(@tran_error);
Insert Into Person(PersonId,PersonName)Values('','Name3')
SET @tran_error = @tran_error + @@ERROR;
print(@tran_error);
IF(@tran_error > 0)
BEGIN
--执行出错,回滚事务
ROLLBACK TransAction;
END
ELSE
BEGIN
--没有异常,提交事务
COMMIT TransAction;
END
SQLServer事务的更多相关文章
- sqlserver 事务日志过大 收缩方法解决方案
		
sqlserver 事务日志过大,可能会导致备份失败或者数据库出现异常,所以要定期清除sqlserver 事务日志 建议:为了防止日志文件无限扩大,可以对日志文件作一些限制. 清除sqlserver事 ...
 - (转)解释一下SQLSERVER事务日志记录
		
本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/07/16/3194220.html 解释一下SQLSERVER事务日志记录 大家知道在完整恢 ...
 - 解释一下SQLSERVER事务日志记录
		
解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log ...
 - sqlserver 事务日志已满解决方案
		
sqlserver 事务日志已满解决方案 可参考这篇博客: https://www.cnblogs.com/strayromeo/p/6961758.html 一.删除日志文件:(不建议) 二.手动收 ...
 - SQLServer 事务的隔离级别
		
SQLServer事务的隔离级别 数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况. 更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务 ...
 - SQLServer 事务复制中使用脚本添加某个对象的发布
		
原文:SQLServer 事务复制中使用脚本添加某个对象的发布 -- use [发布库] --添加表:创建项目并将其添加到发布中 exec sp_addarticle @publication = N ...
 - SqlServer事务语法及使用方法(转)
		
原博:http://blog.csdn.net/xiaouncle/article/details/52891563 事务是关于原子性的.原子性的概念是指可以把一些事情当做一个不可分割的单元来看待.从 ...
 - SQLServer事务同步下如何收缩日志
		
事务同步是SQLServer做读写分离的一种常用的方式. 随着业务数据的不断增长,数据库积攒了大量的日志,为了腾出硬盘空间,需要对数据库日志进行清理 订阅数据库的日志清理 因为订阅数据库所有的数据都来 ...
 - SQLServer  事务隔离级别与锁的申请和释放
		
脏读:当一个事务开始更新数据,但是这个事务并没有完全提交,这个时候第二个事务开始读取数据,把第一个事务所更改的数据读了出来, 第二个事务读取的数据时临时的,因为有可能第一个事务最终有可能做回滚操作 不 ...
 - Sqlserver事务发布实现数据同步
		
事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这 里以sqlserver2008的事务发布功能为例,对发 ...
 
随机推荐
- leetcode 142. Linked List Cycle II
			
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...
 - Android学习笔记(二十)——自定义内容提供器
			
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 如果我们想要实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器,可以通过新建一个类去继承 Conten ...
 - 解决ubuntu每次重启屏幕亮度都重置为最高亮度问题
			
很多朋友都会碰到这个问题,Ubuntu系统,每次通过系统设置修改了屏幕亮度,重启系统都会将屏幕亮度调成最大值,很是苦恼. 上网搜索一番发现,修改屏幕亮度的文件是:/sys/class/backligh ...
 - [codevs1029]遍历问题
			
[codevs1029]遍历问题 试题描述 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中 ...
 - iframe自适应宽度
			
<iframe id="course_content" style="width:100%;margin:5px 0 0;" scrolling=&quo ...
 - Ubuntu16.04/centos7 下为chrome/firefox安装flash player插件
			
为chrome安装flash: 打开终端,输入:sudo apt-get install pepperflashplugin-nonfree 或官网下载安装google-chrome-stable 为 ...
 - ubuntu14.04安装django
			
1) sudo apt-get install python-pip#安装pip 2) pip install Django==1.8.1
 - Django CRM __contains与__icontains区别
			
http://www.yihaomen.com/article/python/199.htm operators = { 'exact': '= %s', 'iexact': 'LIKE %s', ' ...
 - zju3430
			
题意:给出多个加密的模式串,和多个待匹配的串,问每个串里出现了多少种模式串.加密方法是把每3bytes加密成按6bits一个对应成4个字符,对应方法题里给了. 分析:除了解密之外,基本是个赤裸裸的AC ...
 - nginx 原理&知识
			
2015年6月4日 17:04:20 星期四 发现两个关于nginx原理的系列文章, 非常好 http://blog.sina.com.cn/s/blog_6d579ff40100wi7p.html ...