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中的事物

  • 2013年07月04日 17:59
  • 496KB
  • 下载

sql 事物处理

  • 2012年05月06日 14:45
  • 157KB
  • 下载

Sql Server事物、索引、视图

事务概念: 事务是一种机制,它包含了一组数据库操作命令,而且将所有的命令作为一个整体向数据库提交或撤销。 这组命令要么执行,要么都不执行,所以事务是一个不可分割的逻辑工作单元。 事务的特点: ...

SQL 事物的两种用法

一。事物:      1.事物是一种机制,它包含了一组数据库的操作命令,并且所有的命令作为一个整体执行,在内存中执行,停在内存的临时表中,没             有去执行数据库的操作。  ...

基于SQL Server 2008事物复制的多到一同步

因为业务需要,我们需要将分别在全省各地的数据库同步到省中心数据库中,于是决定采用SQL Server2008自带的事物发布机制来完成此功能,具体步骤如下: (此过程为摸索出来的,如果错误部分还望各位...

SQL Server 性能调优事物的实际操作步骤(1)

我们今天主要描述的是SQL Server 性能调优事物实际操作步骤,我在一个信誉度很好的网站找到一个关于SQL Server 性能调优事物实际操作步骤的资料,下面的文章就是对实例的相关内容的具体介绍。...

关于sql事物的理解

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(...

sql事务及事物

sql事务(Transaction)用法介绍及回滚实例   事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通...
  • X_X_OO
  • X_X_OO
  • 2016年09月13日 19:11
  • 93

SQL2008 数据库根据事物日志的还原

备份事物

SQL Server事物,锁机制

锁的概述  一. 为什么要引入锁  多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:  丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL 事物
举报原因:
原因补充:

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