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
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zerolsy/archive/2008/02/26/2123637.aspx
相关推荐
在本"SQL事务处理代码共享"资源中,我们重点关注如何在实际编程中实现SQL事务。通过分析其中的"bank"文件,我们可以了解到与银行交易相关的事务处理机制,这是数据库操作中的核心概念。 事务处理通常包含四个基本...
在ASP中实现SQL事务处理,一般步骤如下: 1. 打开数据库连接: ```vbscript Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Provider=SQLOLEDB;Data Source=<数据库服务器>;Initial Catalog=...
SQL事务是数据库操作的重要概念,用于确保一组数据库操作要么全部成功,要么全部失败,以保持数据的一致性和完整性。 本实例是关于在ASP.NET中使用C#处理SQL事务的一个简单示例,非常适合初学者学习。在实际应用中...
本资料“sql事务全攻略”深入浅出地探讨了这一主题,旨在帮助读者理解并掌握事务的应用。 1. **事务的基本概念** 事务是一组数据库操作,这些操作被视为一个逻辑工作单元,必须全部成功或全部失败。如果其中任何...
在本实验中,主题聚焦于SQL事务,这是数据库管理系统中执行操作的重要概念,尤其是在并发控制和数据一致性方面。事务是数据库操作的基本单元,确保一系列数据库操作要么全部完成,要么全部不完成,以此来维护数据的...
本文将深入探讨C#语言中如何实现SQL事务处理,并通过一个具体的示例代码来阐述其应用。 ### C#执行SQL事务的重要性 在数据库操作中,事务是指一系列的操作作为一个整体被提交或回滚。如果事务中的所有操作都成功...
SQL事务在ASP.NET MVC框架中的使用 SQL事务是数据库管理系统中的一种机制,可以确保多个操作的原子性和一致性。在ASP.NET MVC框架中, SQL事务可以用于实现复杂的业务逻辑,例如转账操作。在本文中,我们将讨论SQL...
本压缩包文件“删除sql事务日志.doc”提供了一个详细的指南,下面我们将深入探讨这个主题。 首先,理解事务日志的结构和作用至关重要。事务日志记录了每个事务的开始、操作和结束状态,确保数据的一致性和可恢复性...
SQL事务是数据库操作的核心组成部分,确保了数据的一致性和完整性。在SQL中,事务具有四个基本属性,即ACID(原子性、一致性、隔离性和持久性)。 原子性(Atomicity):原子性保证了事务中的所有操作要么全部成功...
4. **在.NET框架下的C#中使用SQL事务** 在C#程序中,可以使用ADO.NET组件与SQL Server交互,实现事务控制。例如,可以使用`System.Data.SqlClient.SqlConnection`的`BeginTransaction()`方法开启一个事务,`Commit...
在SQL Server中,事务是数据库操作的基本单位,用于确保数据的一致性和完整性。事务处理是数据库管理系统中的核心功能,它允许我们对一系列SQL语句进行原子性操作,即这些操作要么全部执行,要么全部不执行。这篇...
SQL 事务回滚解决回滚无效的情况 BEGIN TRY END TRY CAHTH
首先,我们来讨论SQL事务。事务是数据库操作的基本单位,它确保了数据的一致性和完整性。一个事务可以包含一个或多个数据库操作,如插入、更新或删除数据。事务有四个关键属性,也被称为ACID特性: 1. 原子性...
SQL事务是确保数据一致性、完整性和可靠性的核心机制。在这个场景中,我们将深入探讨如何使用SQL事务来管理学生的借书系统,同时也会涉及到SQLHelp数据通用访问类的使用以及数据库备份的策略。 首先,让我们理解SQL...
smartsofthelp 数据库SQL 事务回滚测试工具 sql 语句多条任务添加 SQL事务回滚测试工具
在数据库管理中,SQL事务是确保数据完整性和一致性的重要机制。本文主要针对SQL事务进行浅析,特别是如何在实际操作中应用事务,如银行转账问题的处理。事务是一组数据库操作,它们被视为单一的逻辑工作单元,必须...
四、SQL事务 事务是SQL中的一个核心概念,它确保数据库操作的一致性和完整性。事务由一系列的数据库操作组成,这些操作要么全部成功,要么全部回滚。BEGIN TRANSACTION启动一个事务,COMMIT用于提交事务(保存更改)...
MY SQL 事务隔离 查询:默认事务隔离级别 mysql> select @@tx_isolation;当前会话的默认事务隔离级别 mysql> select @@session.tx_isolation;当前会话的默认事务隔离级别 mysql> select @@global.tx_isolation;全局...
对相关SQL事务知识的说明,同时包含相应的案例对说明进行解释