`
897371388
  • 浏览: 528474 次
文章分类
社区版块
存档分类
最新评论

简单例子理解数据库事务

 
阅读更多


简单例子理解数据库事务

/*-- 创建表 --*/
--创建农行账户表bank
if exists(select * from sysobjects where name='bank')
	drop table bank
go
create table bank
(
	customerName char(10),		--顾客姓名
	currentMoney money			--当前余额
)
/*-- 添加约束:根据银行规定,账户余额不能少于1元,否则视为销户 --*/
alter table bank
add constraint CK_currentMoney check(currentMoney>=1)
/*-- 插入测试数据:张三开户,开户金额为800,李四开户,开户金额1 --*/
insert into bank(customerName,currentMoney) values('张三',1000)
insert into bank(customerName,currentMoney) values('李四',1)
--查看结果
select * from bank
go

/*-- 转账测试:张三希望通过转账,直接汇钱给李四1000元 --*/
set nocount on --不显示受影响的行数信息
print '查看转账事务前的余额'
select * from bank
go
/*-- 开始事务 --*/
begin transaction
/*-- 定义变量,用于累计事务执行的过程中的错误 --*/
declare @errorSum int
set @errorSum=0		--初始化为0,即无错误
/*-- 转账 --*/
update bank set currentMoney=currentMoney-1000 where customerName='张三'
set @errorSum=@errorSum+@@error		--累计是否有错误
update bank set currentMoney=currentMoney+1000 where customerName='李四'
set @errorSum=@errorSum+@@error		--累计是否有错误

print '查看转账事务过程中的余额'
select * from bank

/*-- 根据是否有错误,确定事务是提交还是撤销 --*/
if @errorSum<>0		--如果有错误
	begin
		print '交易失败,回滚事务'
		rollback transaction
	end
else
	begin
		print '交易成功,提交事务,写入硬盘,永久保存'
		commit transaction
	end

print '查看转账事务后的余额'
select * from bank
go


分享到:
评论

相关推荐

    深入理解SQL Server 中的错误处理

    为了能够掌握在SQL Server 2000中错误处理是如何工作的,必须首先要理解数据库事务的概念。在数据库术语中,事务就是指作为一个单独的工作单位出现的一系列语句。举个例子来 说,假设你有三个语句要执行,事务就可以...

    数据库事务与锁步骤

    什么是事务(Transaction)?  是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么 ...  举个例子加深一下理解:同一个银行转账,A转1000块钱给B,这里存在两个操作,一个是A账户扣款1000元,两一个操

    Oracle编程艺术:深入理解数据库体系结构 第二版

    本书是一本关于Oracle数据库体系结构的权威图书,涵盖了所有重要的Oracle体系结构特性,包括文件、内存结构和进程、锁和闩、事务、并发和多版本、表和索引、数据类型、分区和并行,以及数据加载和卸载,并利用具体的...

    什么是NoSQL数据库?

    为了更好地了解本书所介绍的NoSQL数据库,对关系型数据库的理解是必不可少的。那么,就让我们先来看一看关系型数据库的历史、分类和特征吧。 关系型数据库简史 1969年,埃德加•弗兰克•科德(Edgar Frank Codd)...

    深入理解MySQL中的事务机制

    使用数据库事务可以确保除事务性单元内的所有操作都成功完成。MySQL中的InnoDB引擎的表才支持transaction。在一个事务里,如果出现一个数据库操作失败了,事务内的所有操作将被回滚,数据库将会回到事务前的初始状态...

    Oracle.9i&10g;编程艺术深入数据库体系 part1

    本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...

    Oracle.9i&10g;编程艺术深入数据库体系 part4

    本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...

    Oracle 9i & 10g编程艺术:深入数据库体系结构

    本书是一本有关Oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...

    Oracle.9i&10g;编程艺术深入数据库体系 patr3

    本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...

    Oracle.9i&10g;编程艺术深入数据库体系 part2

    本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...

    [数据库系统基础教程].(美)Jeffrey.D.Ullman.中文扫描版

    本书由斯坦福大学知名计算机科学家jeffrey d.ullman和jennifer widom合作编写, 作者采用一种易于理解的、面向用户的方式介绍了数据库系统,主要侧重于介绍数据库的设计与使用以及实际数据库应用的实现。它涵盖了...

    Oracle 9i_10g编程艺术:深入数据库体系结构

    书中深入地分析了Oracle数据库体系结构,包括文件、内存结构以及构成Oracle数据库和实例的度层进程,然后讨论了一些重要的数据库主题,如锁定、并发控制、事务、重做和撤销,还解释了这些内重要性。*后,分析了...

    SQL Server 2008数据库设计与实现

     6.2.3 基于简单表达式的CHECK约束  6.2.4 基于函数的CHECK约束  6.2.5 约束引起的错误  6.2.6 DML触发器  6.2.7 处理来自触发器和约束的错误  6.3 手动数据保护  6.4 更多最佳实践  6.5 总结 第7章...

    Oracle 9i 10g编程艺术深入体系结构 中文版

    无论你是程序员还是dba,要创建和管理稳定、高质量的oracle系统,归根结底都需要理解oracle数据库的体系结构。  本书是讲述oracle数据库毋庸置疑的权威指南,凝聚了世界顶尖的oracle专家thomas kyte数十年的宝贵...

    JDBC连接数据库,包含DBCP、C3P0连接池,慕课网JDBC之对面的女孩走过来项目的源码

    Java JDBC基本内容,带增删改查例子,支持MySql数据库,支持...有利于初学者理解数据库和Java的连接,还有连接池的两个小demo,也是慕课网上 JDBC之对面的女孩走过来这个项目的源码,实测可用,和课程上的效果一样。

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version ...

    数据库基础

    §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24 §1.2.2 数据字典概念 25 §1.3 SQL、SQL*Plus及 PL/SQL 25 §...

    MySQL事务隔离

    事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。 仅从其定义来看,你可能...数据库事务拥有以下4大特性: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolat

Global site tag (gtag.js) - Google Analytics