数据库的事务创建与运行实验报告
北京邮电大学
实验报告
课程名称 数据库系统原理
实验内容 实验七
实验名:数据库的事务创建与运行实验
班级 姓名
指导老师 成绩_________
2012 年 05 月 30 日
实验七 数据库的事务创建与运行实验
实验目的
通过实验,了解sql sever 数据库系统中各类数据库事务的定义机制和基于
锁的并发控制机制,掌握sql sever 数据库系统的事务控制机制。
实验平台及环境
本机为windows 7 操作系统平台, SQL Server 2008 数据库环境。
实验内容
1、定义三种模式的数据库事务
2、察看事务的隔离级别
实验步骤和结果分析
1、定义三种模式的数据库事务
(1)显式事务
显示事务是一种由你自己指定的事务,允许自己决定哪一批工作必须成功完
成, 否则所有部分都不完成。操作包括 begin transaction, rollback
transaction, commit transaction。
例如:建立一个显示业务,删除和插入已调记录同时进行
begin tran
insert into 学生 values ('31430','张明','女','1980-1-2 00:00','计算机
','3146')
delete from 学生 where 学号='31427'
commit tran
执行后再select * from 学生结果如下:
分析:由上表可见,要么删除和插入同时成功 (插入了张明信息同时又删除
了黄金花的信息),要么同时失败。这正是显式事务的特点。
(2)自动提交事务
自动提交事务:SQL Server 的默认模式,无需加begin、rollback、commit
等。
例如:
insert into 学生 values ('31431','李明','女','1980-1-2 00:00','计算机
','3146')
执行后再select * from 学生结果如下:
分析:自动提交事务模式下将每条单独的T-SQL 语句视为一个事务。如果成
功执行,则自动提交 (比如上图,成功执行,李明的信息提交),否则回滚。
(3) 隐式事务
打开隐性事务:set implicit_transactions on
在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或
ROLLBACK 语句显式完成。
例如:
set implicit_transactions on
insert into 学生 values ('31432','李化','女','1980-1-2 00:00','计算机
','3146')
commit tran
执行后再select * from 学生结果如下:
分析:当以隐性事务模式操作时,SQL Servler 将在提交或回滚事务后自动
启动新事务。无法描述事务的开始,只需要提交或回滚事务。
2、察看事务的隔离级别
DBCC Useroptions
图上isolation level 的Va lue 值 read committed 即已提交读模式,read
committed 级别是SQL Server 的默认事务隔离级别。
实验小结
这次做实验内容不多,不过通过实验还是加强了对sql sever 数据库系统中
各类数据库事务的定义机制和基于事务模式的认识。
1、创建事务时,总是弹出警告告诉我插入异常,命令已终止。经过分析,发现
是以前建立的主键和外键约束在作祟,所以立马删掉主键和外键,就能正常
创建事物和执行。
2、隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也
越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read
Committed,它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不
可重复读、虚读和第二类丢失更新这些并发问题,在可能出现这类问题的个
别场合,可以由应用程序采用悲观锁或乐观锁来控制。
3、常用的四种隔离级别有:READ UNCOMMITED (未提交读)、READ COMMITTED (