简单例子理解数据库事务
/*-- 创建表 --*/
--创建农行账户表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 2000中错误处理是如何工作的,必须首先要理解数据库事务的概念。在数据库术语中,事务就是指作为一个单独的工作单位出现的一系列语句。举个例子来 说,假设你有三个语句要执行,事务就可以...
什么是事务(Transaction)? 是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么 ... 举个例子加深一下理解:同一个银行转账,A转1000块钱给B,这里存在两个操作,一个是A账户扣款1000元,两一个操
本书是一本关于Oracle数据库体系结构的权威图书,涵盖了所有重要的Oracle体系结构特性,包括文件、内存结构和进程、锁和闩、事务、并发和多版本、表和索引、数据类型、分区和并行,以及数据加载和卸载,并利用具体的...
为了更好地了解本书所介绍的NoSQL数据库,对关系型数据库的理解是必不可少的。那么,就让我们先来看一看关系型数据库的历史、分类和特征吧。 关系型数据库简史 1969年,埃德加•弗兰克•科德(Edgar Frank Codd)...
使用数据库事务可以确保除事务性单元内的所有操作都成功完成。MySQL中的InnoDB引擎的表才支持transaction。在一个事务里,如果出现一个数据库操作失败了,事务内的所有操作将被回滚,数据库将会回到事务前的初始状态...
本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...
本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...
本书是一本有关Oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...
本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...
本书是一本有关oracle 9i和10g体系结构数据库的权威书籍,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和锁存,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并充分利用具体的...
本书由斯坦福大学知名计算机科学家jeffrey d.ullman和jennifer widom合作编写, 作者采用一种易于理解的、面向用户的方式介绍了数据库系统,主要侧重于介绍数据库的设计与使用以及实际数据库应用的实现。它涵盖了...
书中深入地分析了Oracle数据库体系结构,包括文件、内存结构以及构成Oracle数据库和实例的度层进程,然后讨论了一些重要的数据库主题,如锁定、并发控制、事务、重做和撤销,还解释了这些内重要性。*后,分析了...
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章...
无论你是程序员还是dba,要创建和管理稳定、高质量的oracle系统,归根结底都需要理解oracle数据库的体系结构。 本书是讲述oracle数据库毋庸置疑的权威指南,凝聚了世界顶尖的oracle专家thomas kyte数十年的宝贵...
Java JDBC基本内容,带增删改查例子,支持MySql数据库,支持...有利于初学者理解数据库和Java的连接,还有连接池的两个小demo,也是慕课网上 JDBC之对面的女孩走过来这个项目的源码,实测可用,和课程上的效果一样。
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 §...
事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。 仅从其定义来看,你可能...数据库事务拥有以下4大特性: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolat