在SQL Server 2008中使用事务
2017-12-05 15:04
204 查看
/* 数据库实验八 2017/05/25 具体操作内容: 建立银行数据库DBBank,创建一个银行账号信息表tbl_accounts (account_num,account_name,balance,memory), 分别表示账号、户名、余额和备注这四个属性列,插入相应的数据,运行事务,完成银行转账业务。可以用以下的脚本实现: (1)使用显式事务,完成银行转账业务; (2)使用隐式事务,完成银行转账业务; (3)创建一个具有保存点的事务,验证保存点的作用; (4)验证什么是自动提交事务; (5)创建一个新的登录,打开两个SSMS,分别用不同的登录名连接到同一服务器上,打开同一个数据库,运行相关的事务处理,验证多个事务并发执行时的情况。 */ --创建DBBank数据库 Create Database DBBank Go Use DBBank --创建tbl_accounts表 Create Table tbl_accounts ( account_num varchar(10) primary key, account_name varchar(50), balance decimal(10,3), memory varchar(200) ) --往tbl_accounts表中插入数据 Insert Into tbl_accounts Values('A','东方软件',60000,null) Insert Into tbl_accounts Values('B','东方软件',30000,null) Insert Into tbl_accounts Values('C','新天贸易',100000,null) Select * from tbl_accounts --(1)使用显式事务,完成银行转账业务; --开始定义事务 Begin Transaction T_transfer Select * from tbl_accounts where account_num='A' And account_name='东方软件' Update tbl_accounts set balance=balance-10000 where account_num='A' And account_name='东方软件' Select * from tbl_accounts where account_num='A' And account_name='东方软件' Select * from tbl_accounts where account_num='B' And account_name='东方软件' Update tbl_accounts set balance=balance+10000 where account_num='B' And account_name='东方软件' Select * from tbl_accounts where account_num='B' And account_name='东方软件' --回滚上面的事务,事务的结束方式只能选择其中的一种,要么回滚,要么提交; --Rollback Transaction T_transfer --提交当前事务,(已经回滚的事务就不能再提交了!) Commit Transaction T_transfer --查看事务执行后的结果 select * from tbl_accounts where account_name='东方软件' --(2)使用隐式事务,完成银行转账业务; --设置隐式事务选项为on Set Implicit_Transactions On --事务不需要有显式的开始标志; Select * from tbl_accounts where account_num='A' And account_name='东方软件' Update tbl_accounts set balance=balance-10000 where account_num='A' And account_name='东方软件' Select * from tbl_accounts where account_num='A' And account_name='东方软件' Select * from tbl_accounts where account_num='B' And account_name='东方软件' Update tbl_accounts set balance=balance+10000 where account_num='B' And account_name='东方软件' Select * from tbl_accounts where account_num='B' And account_name='东方软件' --回滚上面的事务,事务的结束方式只能选择其中的一种,要么回滚,要么提交; --Rollback Transaction --提交当前事务,(已经回滚的事务就不能再提交了!) Commit Transaction --查看事务执行后的结果 select * from tbl_accounts where account_name='东方软件' --(3)创建一个具有保存点的事务,验证保存点的作用; --开始定义事务 Begin Transaction T_transfer Select * from tbl_accounts where account_num='A' And account_name='东方软件' Update tbl_accounts set balance=balance-10000 where account_num='A' And account_name='东方软件' Select * from tbl_accounts where account_num='A' And account_name='东方软件' --设置保存点Save_transfer Save Transaction Save_transfer Select * from tbl_accounts where account_num='B' And account_name='东方软件' Update tbl_accounts set balance=balance+10000 where account_num='B' And account_name='东方软件' Select * from tbl_accounts where account_num='B' And account_name='东方软件' --回滚到保存点 Rollback Transaction Save_transfer --查看回滚到保存点后的结果 select * from tbl_accounts where account_name='东方软件' --回滚整个事务,事务的结束方式只能选择其中的一种,要么回滚,要么提交; --Rollback Transaction T_transfer --提交当前事务,(已经回滚的事务就不能再提交了!) Commit Transaction T_transfer --查看事务执行后的结果 select * from tbl_accounts where account_name='东方软件' --(4)验证什么是自动提交事务; --第一个事务;单一的一个更新语句,系统自动作为一个事务进行处理; Update tbl_accounts set balance=balance-10000 where account_num='A' And account_name='东方软件' Select * from tbl_accounts where account_num='A' And account_name='东方软件' Select * from tbl_accounts where account_num='B' And account_name='东方软件' --第二个事务; Update tbl_accounts set balance=balance+10000 where account_num='B' And account_name='东方软件' Select * from tbl_accounts where account_num='B' And account_name='东方软件' --查看事务执行后的结果 select * from tbl_accounts where account_name='东方软件' --(5) --创建用户 USE [DBBANK] GO CREATE LOGIN test WITH PASSWORD='1234'; CREATE USER test FOR LOGIN test; GRANT insert,delete,select ON tbl_accounts TO test; --1. Use DBBank Select * from tbl_accounts --2. Select * from tbl_accounts --3. Select * from tbl_accounts --4. Select * from tbl_accounts --5. Begin Tran T_Del2 Delete from tbl_accounts where account_num='C' Select * from tbl_accounts --6. Rollback Select * from tbl_accounts ---------------------------------------------------------------- --7. Use DBBank Select * from tbl_accounts --8. Select * from tbl_accounts --9. Select * from tbl_accounts --10. Select * from tbl_accounts with(nolock) --11. Select * from tbl_accounts --12. Select * from tbl_accounts --13. Select * from tbl_accounts with(nolock) --14. Select * from tbl_accounts --15. Select * from tbl_accounts
相关文章推荐
- 使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)
- 使用SQL Server 2008的事务日志传送功能备份数据库
- 使用SQL Server 2008的事务日志传送功能备份数据库
- [转载]使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)
- SQL Server 2008编程入门经典笔记:事务
- 事务的使用(sql server 数据库和C#代码)
- SQL Server 2008 没有日志文件,使用MDF文件附加数据库
- 怎样在SQL Server 2008中配置和使用数据库备份压缩
- jfinal框架下使用c3P0连接池连接sql server 2008
- SQL Server 2005/2008/2012 数据库一直显示(正在恢复)无法使用
- 我在Windows 2008 上装先安装了Sql server 2008 ,这时sql 2008使用正常,当我再装SharePoint Server 2007后,sql server 2008就打不开了
- SQL Server 事务的使用
- 使用SQL Server 2008中的hierarchyid类型来设计具有树型层次关系的表
- 使用SQL Server 2008的FILESTREAM特性管理文件(二)
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
- 使用SQL Database Migration Wizard把SQL Server 2008迁移到Windows Azure SQL Database
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)
- 在SQL Server 事务中使用Savepoints来保存提交点
- SQL Server跨数据库访问及分布式事务的使用及配置