事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是做为最小的控制单元来使用的。他包含的所有数据库操作命令作为一个整体一起向系统提交或撤消,这一组数据库操作命令要么都执行,要么都不执行。
事物的四个属性(ACID):
①原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,事务的元素是不可分的,事务是一个完整操作。
②一致性(Consistemcy):事物完成时,数据必须是一致的,也就是说,和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。
③隔离性(Isolation):对数据进行修改的多个事务是彼此隔离的。这表明事务必须是独立的,不应该以任何方式影响其他事务。
④持久性(Durability):事务完成之后,它对于系统的影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库
事务的主要的控制语句:
BEGIN TRANSACTION:开始事务
COMMIT TRANSACTION:提交,也就是事务的结束
ROLLBACK TRANSACTION:如果事务没有全部完成,回滚到初始值或者保存点。
SAVE TRANSACTION:设置保存点,允许部分的提交事务。
以上是事务的一些基本概念,涉及到多表操作的时候保证一个过程都顺利的执行,经常用到事务。在SQL中事务就是一个存储过程,注意一些语法即可。
实例运用:事务的调用方法和存储过程一样。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Jesse>
-- Create date: <2012年8月11日, PM 09:11:50>
-- Description: <退卡操作事务:用户信息基本表中的记录删除之后在退卡信息表添加一条记录>
-- =============================================
CREATE PROCEDURE <ReturnCard>
@cardno varchar(18) --传入参数卡号
@c_operator varchar(10) --传入操作员名称
AS
BEGIN
declare @CancelCash decimal(18,2),@Err1 int,@Err2 int --定义变量
SELECT @cancelcash=select balance from D_sqlStudentInfo where carno=@cardno --给变量赋值
BEGIN TRANSACTION --开始事务
Delete from D_sqlStudentInfo where carno=@cardno ---删除用户记录语句
Set @Err1=@@Error --如果出错就会给变量赋值,变量不为0
insert D_CancelCard (cardno,cancelCash,c_datetime,c_operator)
values (@cardno,@cancelCash,getdate(),@c_operator) ---插入数据语句
Set @Err2=@@Error --如果出错就会给变量赋值,变量不为0
IF @Err1=0 AND @Err2=0 --如果都为0,表示没有出错
COMMIT TRANSACTION --提交,完成事务
ELSE
ROLLBACK TRANSACTION --出错,事务回滚,恢复到初始状态,没有任何改动
END
GO
分享到:
相关推荐
在SqlMap配置文件中,我们可以定义数据源、事务管理器、SQL语句等信息。例如,`<sqlMap>`元素用于包含具体的SQL语句,`<select>`、`<insert>`、`<update>`和`<delete>`元素则分别用于定义查询、插入、更新和删除操作...
每个 SQL Server 数据库都有事务日志,用于记录所有事务以及每个事务所做的数据库修改。 你是否想读取和分析SQL Server日志文件 (.ldf) ?正找不到合适的软件呢?以上一款强大的sql数据库日志分析工具,可以轻松打开...
在"SQL语句_使用C#解析SQL语句"这份资料中,你可能会学到如何在实际项目中结合C#和SQL,处理复杂的数据库操作,包括数据的读取、写入以及事务处理等。通过实例代码和讲解,你将能够更好地理解和掌握在C#环境中解析和...
"程序员的SQL金典(完整).pdf"可能是一部全面的SQL指南,不仅涵盖基础和进阶知识,还可能包含数据库设计原则、事务处理、并发控制、备份恢复策略等内容,旨在帮助程序员全面掌握SQL在实际项目中的应用。 最后,"全面...
本篇将深入探讨SQL Server事务日志的原理,以及如何利用`fn_dblog`这个系统存储过程来查询和解析事务日志。 事务日志是SQL Server中的一个关键组成部分,它跟踪数据库中每个事务的所有更改。每次数据修改时,这些...
《SQL Server 数据库连接驱动:sqljdbc4-4.0.jar 深度解析》 在信息化社会中,数据库管理系统的角色至关重要,SQL Server作为微软公司推出的强大关系型数据库管理系统,广泛应用于各种业务场景。而要与SQL Server...
`sqljdbc4-4.0.jar`的使用不仅限于基本的连接,它还支持预编译的SQL语句(PreparedStatement),事务处理,批处理操作,以及高级特性如存储过程、游标、大数据类型处理等。此外,这个驱动还提供了JDBC遵从性测试,以...
3. **SqlMap映射文件**:解析了映射文件的构成,如`<select>`、`<insert>`、`<update>`和`<delete>`等元素,用于定义SQL查询和操作。 4. **动态SQL**:展示了如何使用iBATIS的动态SQL特性,通过`<if>`、`<choose>`...
DTD是XML文档类型定义,它定义了XML文档的合法构建块,包括元素、属性、实体等,确保XML文档遵循一定的结构,以便解析器能正确解析和处理。在Ibatis中,`sql-map-2.dtd`和`sql-map-config-2.dtd`分别对应于`sql-map`...
《SQL Manager:深入解析源码》 SQL Manager是一款强大的数据库管理工具,它的源码为我们提供了深入了解数据库管理和查询优化的窗口。通过对"sqlManager-源码.rar"中的sqlManager-master进行分析,我们可以从中学习...
"存储引擎"章节深入解析了SQL Server 2005的数据存储和处理机制。它涉及数据页、索引结构(如B树和哈希索引)、锁和行版本控制等概念。理解这些底层机制有助于优化数据库设计,选择合适的索引策略,以及在遇到性能...
《iBATIS-SqlMaps-中文教程》是一个深入解析iBATIS框架的资源,适合对Java Web开发感兴趣的初学者和进阶者。iBATIS是一个持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java代码的分离,简化...
### DB2SQL0000-32999:IBM DB2SQL信息解析 #### 概述 在IBM DB2数据库系统中,错误代码和警告信息被广泛应用于诊断问题和进行故障排查。DB2SQL0000至32999这一系列的SQL错误代码,覆盖了从DB2 10.5版本起,在...
### SQL Server T-SQL 关键知识点解析 #### 一、SQL Server T-SQL 概述 - **定义**:T-SQL(Transact-SQL)是Microsoft SQL Server 的专有扩展语言,它基于标准的SQL语言,并添加了额外的功能来支持数据库编程。 - ...
在本项目中,ANTLR4被用来创建一个解析器,这个解析器支持多种SQL方言,包括Spark SQL、TiDB SQL以及Flink SQL,同时还支持Spark和Flink的运行命令解析。 Spark SQL是Apache Spark的一个组件,主要负责处理结构化的...
### SQL Server 游标的使用与事务管理 #### 一、游标的使用方法 在 SQL Server 中,游标是一种用于处理结果集中的数据行的一种机制。它允许开发人员逐行访问查询的结果,这对于需要对每一条记录进行特定操作的场景...
### Mybatis SQL解析流程详解 #### 一、概述 Mybatis作为一款优秀的持久层框架,在Java开发领域中占据着举足轻重的地位。其核心功能之一便是SQL解析与执行,通过对SQL语句的灵活处理,使得开发者能够更加高效地...
3. SQL 3的复杂查询与事务处理:介绍窗口函数、递归查询和事务控制,以及SQL 3中的新特性,如XML支持和触发器(Trigger)。 通过阅读这组PDF文件,读者不仅可以掌握Delphi从基础到高级的开发技能,也能深入理解SQL...
### 关于《Inside Microsoft SQL Server 2008 T-SQL Programming》的知识点解析 #### 一、SQL Server 2008概述 《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入地介绍了SQL Server 2008的各项...