SQL 事物

转载 2012年03月26日 11:38:27

原文转自:http://www.cnblogs.com/lf78995525/archive/2010/07/21/1781983.html

 

SQL事务
 
一、事务概念
    事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。
 
二、事务属性
事务4大属性:
1   原子性(Atomicity):事务是一个完整的操作。
2   一致性(Consistency):当事务完成时,数据必须处于一致状态。
3   隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。
4   持久性(Durability):事务完成后,它对于系统的影响是永久性的。
 
三、创建事务
T-SQL中管理事务的语句:
1 开始事务: begin transaction
2 提交事务:commit transaction
3 回滚事务: rollback transaction
 
事务分类:
1 显式事务:用begin transaction明确指定事务的开始。
2 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。
3 自动提交事务:SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。
 
示例:张三转800元到李四帐户上。
  use stuDB
go
--创建帐户表bank--
if exists(select* from sysobjects where name='bank')
    drop table bank
create table bank
(
    customerName char(10),    --顾客姓名
    currentMoney money        --当前余额
)
go
/**//*--添加约束,帐户不能少于元--*/
alter table bank add
        constraint CK_currentMoney check(currentMoney>=1)
/**//*--插入测试数据--*/
insert into bank(customerName,currentMoney)
select '张三',1000 union
select '李四',1

select * from bank
go

/**//*--使用事务--*/
use stuDB
go
--恢复原来的数据
--update bank set currentMoney=currentMoney-1000 where customerName='李'
set nocount on    --不显示受影响的行数
print '查看转帐事务前的余额'
select * from bank
go

/**//*--开始事务--*/
begin transaction
declare @errorSum int    --定义变量,用于累计事务执行过程中的错误
/**//*--转帐--*/
update bank set currentMoney=currentMoney-800 where customerName='张三'
set @errorSum=@errorSum+@@error    --累计是否有错误
update bank set currentMoney=currentMoney+800 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写法(事物+游标)

 Sql写法(事物+游标) 收藏 --当两个或两以上的操作要么都执行,要么都执行时要用事务。1. Sql写法(事物+游标)--开始事务BEGIN TRAN--不显示计数信息SET NOCOUNT ON...
  • joy_liang
  • joy_liang
  • 2009年11月04日 16:43
  • 625

SqlServer事务语法及使用方法

事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。...
  • xiaouncle
  • xiaouncle
  • 2016年10月22日 16:22
  • 17062

SQL中的事务以及批量更新

1、SQL中的事务指的是将一组SQL语句同时提交,举个例子吧:在银行转账的时候,它的执行过程应该是先把钱取出来,然后再把钱存到另一个账号里面去吧,它的SQL执行过程应该是先DELETE,然后再UPDA...
  • zlb824
  • zlb824
  • 2011年12月06日 15:37
  • 1457

SQL server 事务介绍,创建与使用

事务(Transaction) 事务是一种机制,一个操作序列,包含一组操作指令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求(即要么全部执行,要么全部不执行) ------------...
  • miniduhua
  • miniduhua
  • 2016年08月03日 11:39
  • 3853

SQL——什么是事务?事务的特性有哪些?

概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,...
  • yenange
  • yenange
  • 2012年05月11日 09:39
  • 8228

sql 事物

---开启事务 begin tran --错误扑捉机制,看好啦,这里也有的。并且可以嵌套。 begin try --语句正确 insert into lives(Eat, Play, ...
  • xinyanan1992
  • xinyanan1992
  • 2017年04月13日 15:24
  • 106

在SQL SERVER中实现事务的部分回滚

在SQL SERVER中实现事务的部分回滚1.保存点:是一种实现部分回滚的方法。可以给一个保存点起一个名字,以便在后面的事务中可以回滚到保存点。 2.实现代码。BEGIN TRANSACTION Tr...
  • david_520042
  • david_520042
  • 2010年09月26日 15:10
  • 1331

SQL事物与事物隔离级别

转载自:http://blog.csdn.net/maotongbin/article/details/50600780 SQL Server 数据库中事物的概念 数据库中的事物是数据库并发控制的基本...
  • gythlover
  • gythlover
  • 2017年04月19日 15:20
  • 248

ABAP常用事物码

Advanced Business Application Programming (ABAP)S001 - ABAP/4 Development Workbench S002 - System A...
  • zwwtj2014
  • zwwtj2014
  • 2015年07月16日 15:57
  • 376

常用sql语句-高级特性(事务,索引,约束)

@longdd 2014-08-09 14:25 字数 697 阅读 1 sql 高级特性(事务,索引,约束) sql 事务 开启事务 begin; ...
  • Qlong_dd
  • Qlong_dd
  • 2014年08月09日 14:26
  • 600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL 事物
举报原因:
原因补充:

(最多只允许输入30个字)