




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
长 沙 学 院 课程设计说明书 题目ATM 系统 系 部 计算机科学与技术系 专业 班级 软件五班 姓名 学号 指导教师 起止日期 2013 6 13 2013 06 22 1 实训任务书 课程名称 服务外包软件综合实训课程名称 服务外包软件综合实训 设计题目 设计题目 ATM 系统系统 已知技术参数和设计要求 已知技术参数和设计要求 1 实训目的要求实训目的要求 通过本实训 应能够对 SQLServer20005 工具的了解 与数据库语法的能力 1 了解 SQL 的简史和功能特性 2 掌握 E R 图的绘制和数据库的设计 3 掌握 T SQL 的语法知识 并能够熟练运用它 4 掌握事务与存储过程的使用 2 问题描述 功能要求 问题描述 功能要求 本次案例将完成一个 ATM 银行取款机系统的数据库 1 创建 BankDB 数据库 并保存在 D ATM 文件夹下 2 创建用户信息表 userinfo 3 创建银行卡信息表 cardinfo 4 创建交易信息表 transinfo 5 添加各种约束关系 为 userinfo 表中客户 ID customerID 添加主键约束 为 userinfo 表中客户的身份证 PID 添加唯一约束 为 useinfo 表中的身份证号码添加检查约束 长度为 15 或者 18 为 userinfo 表中的客户电话号码添加检查约束 为 cardinfo 表中的卡号 ID cardID 添加主键约束 为 cardinfo 表中的卡号 ID cardID 添加约束 必须是以 1010 3576 开头 长度为 12 为 cardinfo 表中的货币类型 curType 添加默认约束 默认为 RMB 为 cardinfo 表中的存款类型添加约束 只能是 活期 定活两便和定期 2 cardinfo 表中开卡日期默认为当天日期 cardinfo 表中的开户金额不能低于 1 元 cardinfo 表中的余额不能低于 1 元 cardinfo 表中的密码长度为 6 位数 默认为 88888 cardinfo 表中是否挂失只能是 是 和 否 默认为 否 添加 userinfo 表与 cardinfo 表的外键约束 transinfo 表中的交易日期默认为当天 交易类型只能是 存入 和 支取 添加 cardinfo 表与 transinfo 表的外键约束 6 开户 7 取钱 8 存钱 9 查询余额 10 转账 11 交易统计 3 运行环境要求 运行环境要求 1 客户端 windows 操作系统 SQL Server 2005 数据库客户端 2 服务器 SQL Server 2005 数据库服务器 4 技术要求 技术要求 1 掌握 E R 图的绘制和数据库的设计 2 掌握 T SQL 的语法知识 并能够熟练运用它 3 掌握事务与存储过程的使用 4 触发器 选做 设计工作量 设计工作量 40 课时 工作计划 工作计划 1 2011 级软件工程所有班级级软件工程所有班级 20 课时 设计 计算机系机房 普通教室 3 16 课时 上机 调试 计算机系机房 4 课时 答辩 计算机系机房 班级日期节次地点内容 指导老师 15 周周四 9 12 节 致远楼 1201 布置任务 上机 调试 15 周周五 9 12 节 致远楼 1201上机调试 15 周周六 9 12 节 致远楼 1201上机调试 16 周周一 9 12 节 致远楼 1401上机调试 16 周周二 9 12 节 致远楼 1401上机调试 16 周周三 9 12 节 致远楼 1401上机调试 16 周周四 9 12 节 致远楼 1201上机调试 16 周周五 9 12 节 致远楼 1201上机调试 16 周周六5 8 节致远楼 1404上机调试 11 软件 5 班 16 周周六 9 12 节 致远楼 1201答辩 曾俊勇 指导教师签名 日期 教研室主任签名 日期 系主任签名 日期 4 长沙学院课程设计鉴定表 姓名学号专业软件工程班级软件五班 设计题目ATM 自动取款机系统指导教师 指导教师意见 评定等级 教师签名 日期 答辩小组意见 评定等级 答辩小组长签名 日期 教研室意见 教研室主任签名 日期 系 部 意见 系主任签名 日期 5 说明 课程设计成绩分 优秀 良好 及格 不及格 四类 目目 录录 一 引言一 引言 6 1 1 编写目的 6 1 2 参考资料 6 二 二 需求规约需求规约 7 2 1 业务描述 7 2 2 需求分析 7 三 三 数据库环境说明数据库环境说明 8 四 四 数据库的命名规则数据库的命名规则 8 4 1 数据库对象命名规则 8 4 2 数据项编码规则 8 五 五 逻辑设计逻辑设计 9 5 1 E R 图 9 5 2 关系模型 9 六 六 物理设计物理设计 10 6 1 表汇总 10 6 2 表 1 USERINFO表 用户信息表 10 6 3 表 2 CARDINFO表 银行卡信息表 11 6 4 表 3 TRANSINFO表 供应表 12 6 5 存储过程的设计 13 6 6 触发器的设计 18 七 操作结果七 操作结果 20 7 1 存款测试结果 20 7 2 取款测试结果 20 7 3 转账测试结果 21 7 4 注销结果测试 21 八 事物设计八 事物设计 23 8 1 事物的创建 23 总结总结 25 6 一 引言一 引言 1 11 1 编写目的编写目的 通过数据库 ATM 实训 进一步掌握数据库系统的理论和方法 培养和锻炼开发管理 信息系统的能力 为今后信息系统开发打下良好的基础 本文档是 ATM 系统设计文档的组成部分 数据库是一门应用性很强的专业课 在学 习时必须注意理论与实践相结合 本次课程环节旨在培养学生在本课程范围内 初步掌 握解决实际应用问题时所应具备的查阅资料 综合运用所学知识的能力 为毕业设计及 今后从事专业工作打下基础 本课程环节要求学生了解企业管理信息系统后台数据库的设计 配置过程 掌握管 理信息系统的开发方法 主要包括 需求分析 数据分析 系统逻辑模型设计方法 功 能设计 物理模型设计方法 系统的实现等方法 完成一个小型系统后台数据库的设计 与配置 目的是 明确数据库的表名 字段名等数据信息 用来指导后期的数据库脚本 的开发 设计该数据库的目的是设计一个 ATM 系统 能够按照一定条件查询 统计交易 信息 可以模拟完成开户 存款 取款 转账 注销 挂失 激活 修改密码 查询等 业务 1 2 参考资料参考资料 资料名称作者文件编号 版本 数据库系统概论 王珊 萨师煊2006 年 5 月第 4 版 数据库设计入门经典 鲍威尔2007 年 3 月第 1 版 数据库原理 克罗恩科2005 年 6 月第 1 版 7 二 二 需求规约需求规约 2 1 业务描述业务描述 ATM 系统业务是模拟了银行 ATM 提款机业务的管理功能 在计算机网络 数据库 和先进的开发平台上 利用数据库 sql 语言模拟开发一个良好的 ATM 系统 实现顾客的 开户 存款 取款 查询 转账 修改密码等一系列操作 并且在完成一定的操作后保 存数据的更新和查询 在转账和取款时还要核对余额是否足够 在足够的条件下才能执 行 存储内容则是存储用户的一些信息 如电话号码和身份证号码等 一些用户的详细 资料 还有卡号表中的金额的信息 并对这些信息能够及时更新 2 2 需求分析需求分析 开户功能 新客户需要开户之后才能拥有相应的卡 并对其进行各种交易 在存入一定金额后 可以登录或跳转到交易的界面 进行各种交易 存款功能 客户要能够正确地存款 能够准确地更新客户账号中的余额 并且记录客户的操作 取款功能 判断客户的余额是否大于取款金额 避免出现溢出现象 操作结果记录在表中 转账功能 准确核对客户的账户信息 核对转入账号的信息 判断转出账号的余额是否大于转 出金额 避免出现溢出现象 并记录转出账号和转入账号的操作 注销功能 老用户可在此注销自己原有的卡 8 挂失功能 当客户遗失自己卡后 需对卡进行挂失操作 否则该卡的余额取不出 激活功能 客户遗失自己卡并找到卡后 可对卡进行激活操作 以便继续使用该卡 修改密码功能 客户可在此功能下修改卡的原始密码 查询功能 查询客户余额 查询客户的账号信息 查询客户的操作记录 三 三 数据库环境说明数据库环境说明 数据库实 例 数据库系统数据库 部署环 境 数据库设 计工具 数据库存放 位置 说明 ATM 自 动取款机 系统 Sql Server 2008 Window s 2007 Sql Server存放位置 绝对路径 相 对路径 用于 ATM 自动取 款 四 四 数据库的命名规则数据库的命名规则 4 1 数据库对象命名规则数据库对象命名规则 数据库对象命名规则备注 表字符串功能描述字符串例如 Client 客户信息表 视图 View 功能描述字符串例如 all view 每个客户订单数视图 触发器 trigger 功能描述字符串例如 Decre trigger 减少库存触发器 存储过程proce 功能描述字符串例如 proce SearchClient 查询客户 信息存储过程 9 4 2 数据项编码规则数据项编码规则 五 五 逻辑设计逻辑设计 5 1 E R 图图 数据项命名规则数据类型长度范围备注 编号类整数序号整型0 65535无 姓名类字符串Varchar 20 0 20 位无 地址类字符串Varchar 20 0 20 位无 电话类字符串Char 11 11 位无 价格类浮点型float无无 时间类Datetime 型Datetime无 2011 01 01 10 10 10 10 用户信息表 户名 顾客编号 顾 客 编 号 PID 联系电话居住地址 银行卡信息表 表 卡号 密码货币类型 是否挂失 余额 顾客编号 开户金额 开户日期 属于 交易信息表 属于 交易日期交易金额 交易类型卡号 备注 1 N M N 交易号 5 2 关系模型关系模型 注 下划线为主码 下划波浪线为外码 用户 顾客编号 开户名 身份证号码 联系电话 居住地址 银行卡 卡号 顾客编号 密码 开户金额 开户日期 是否挂失 余额 存款类 型 货币类型 交易 交易号 卡号 交易金额 交易日期 交易类型 备注 六 六 物理设计物理设计 6 1 表汇总表汇总 表名功能说明 表 userinfo用户信息表 存储用户信息等 11 表 cardinfo银行卡信息表 存储银行卡信息等 表 transinfo交易信息表 存储客户的交易信息信息等 6 2 表表 1 userinfo表表 用户信息表用户信息表 表名用户信息表 userinfo 数据库用户sa 主键customer ID 其他排序字段无 索引字段无 序号字段名称数据类 型 精 度范围 允许 为空 Y N 唯一 Y N 区别 度 默认 值 约束条件 说明 1customer IDintNY无无identity 1 1 主键 客户编号 2customer namechar 10 NN无无客户姓名 3P IDvarchar 1 8 NY无无check len P ID 15 or len P ID 18 身份证号码 4customer phonevarchar 1 1 YN无无check customer phone like 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 联系电话 5customer addres s varchar 5 0 YN无无居住地址 sql 脚本create table userinfo customer ID int identity 1 1 primary key 顾客编号 customer name char 10 not null 开户名 P ID varchar 18 unique check len P ID 15 or len P ID 18 not null 身份证号码 customer phone varchar 11 check customer phone like 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 联系电话 customer address varchar 50 居住地址 6 3 表表 2 cardinfo 表表 银行卡信息表银行卡信息表 表名银行卡信息表 cardinfo 数据库用户sa 12 主键card ID 其他排序字段无 索引字段无 序号字段名称数据类型 精度范 围 允许为 空 Y N 唯一 Y N 区别 度 默认 值 约束条件 说明 1card IDchar 19 NY无无check card ID like 1010 3576 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 主键 卡号 2customer ID int NY无无外键 顾客编号 3card passwordchar 6 NN无无default 888888 check len card password 6 密码 4open moneymoneyNN无无check open money 1 开户金额 5open datedatetimeNN无无default getdate 开户日期 6isreportlosschar 2 YN无无default 否 check isreportloss 是 or isreportloss 否 挂失状态 7balancemoneyNN无无check balance 1 余额 8saving typevarchar 10 NN无无check saving type like 活期 or saving type like 定活两便 or saving type like 定期 存款 类型 9cur typechar 5 NN无无default RMB 货币类型 13 sql 脚本create table cardinfo card ID char 19 check card ID like 1010 3576 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 primary key 卡号 customer ID int 顾客编号 card password char 6 not null default 888888 check len card password 6 卡密码 open money money not null check open money 1 开户金额 open date datetime default getdate not null 开户日期 isreportloss char 2 default 否 check isreportloss 是 or isreportloss 否 是否挂失 balance money not null check balance 1 余额 saving type varchar 10 not null check saving type like 活期 or saving type like 定活两便 or saving type like 定期 存款类型 cur type char 5 not null default RMB 货币类型 foreign key customer ID references userinfo customer ID on delete cascade on update cascade 6 4 表表 3 transinfo 表表 供应表供应表 表名交易信息表 transinfo 数据库用户sa 主键trans ID 其他排序字段无 索引字段无 序号字段名称数据类型 精度范 围 允许 为空 Y N 唯一 Y N 区别 度 默认 值 约束条件 说明 1trans IDintNY无无identity 1 1 主键 交易号 2card IDchar 19 NY无无check card ID like 1010 3576 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 外键 卡号 3trans moneymoneyNN无无check trans money 0 交易 金额 4trans datedetetimeNN无无default getdate 交易日期 5trans typevarchar 5 NN无无check trans type like 存入 or trans type like 支取 交易 类型 6remarkvarchar 50 YN无无备注 14 sql 脚本create table transinfo trans ID int identity 1 1 primary key 交易号 card ID char 19 not null check card ID like 1010 3576 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 卡号 trans money money not null check trans money 0 交易金额 trans date datetime not null default getdate 交易日期 trans type varchar 5 check trans type like 存入 or trans type like 支取 交易类型 remark varchar 50 备注 foreign key card ID references cardinfo card ID on delete cascade on update cascade 6 5 存储过程存储过程的设计的设计 1 开户存储过程 提示 银行卡卡号共 19 位 4 位数一组 中间用空格隔开 对于某个银行来说 前面 8 个数字是固定的 后面 8 个数字 要求随机的 并且唯一 我们只需要产生 8 位随机的数字 然后和前 8 位固定的数 字 10103576 连接即可 随机函数的用法下 RAND 随机种子 将产生 0 1 的随机数 要求每次的随机种子不一样 为了保 证随机种子每次不相同 一般的算法如下 随机种子 当前的月份数 100000 当前秒数 1000 当前毫秒数 产生了 0 1 的随机数后 我们取小数点后 8 位 即 0 xxxxxxxx 使用 substring 字符串 开始位置 长度 create procedure proc CardID2 randCardID char 19 output 输出参数 银行卡号 card password char 6 账号密码 open money money 开户金额 isreportloss char 2 是否挂失 saving type varchar 10 存款类型 cur type char 5 货币类型 customer name char 10 用户姓名 P ID varchar 18 身份证号 AS declare r numeric 15 8 15 位数 保留 8 位小数 declare tempStr char 10 select r rand datepart mm getdate 100000 15 datepart ss getdate 1000 datepart ms getdate set tempStr r set randCardID 1010 3576 substring tempStr 3 4 substring tempStr 7 4 若存在该客户信息 declare customer ID int if EXISTS select from userinfo where P ID P ID begin 禁用 CHECK 约束 alter table cardinfo nocheck constraint ALL select customer ID customer ID from userinfo where P ID P ID insert into cardinfo card ID customer ID card password open money open date isreportloss balance saving type cur type values randCardID customer ID card password open money getdate isreportloss open money saving type cur type 启用 CHECK 约束 alter table cardinfo check constraint ALL end else begin print 需注册用户信息 请先登记您的详细信息 end 执行存储过程 declare randCardID char 19 exec proc CardID2 randCardID output 123456 109 否 活期 RMB 曲先生print 您的卡号为 randCardID 2 存钱存储过程 在存储过程中定义三个变量 card ID char 19 inputmoney money 和 card password char 6 这三个变量是用来核对账号的 card ID char 19 用来核对卡号 是否正确 inputmoney money 暂时存储需要存入的金额 card password char 6 则是 用来核对密码的 存储过程中对所有需要核对的信息都进行了准确的核对 例如核对账 号是否处于挂失状态 核对账号密码是否正确 在核对完所有的信息之后才准确地完成 操作 存钱存储过程如下 create procedure proc inputMoney card ID char 19 inputmoney money card password char 6 as declare errorsum int set errorsum 0 declare isreportloss char 2 16 select isreportloss isreportloss from cardinfo where card ID card ID and card password card password if isreportloss 是 begin print 交易正在进行中 print 帐户处于挂失状态则不可以存款 end else if cast inputmoney as int 1000 begin print 交易正在进行中 print 存款金额为 100 的整数倍 end else if inputmoney 10000 begin print 交易正在进行中 print 存款金额不能大于 10000 end else begin begin transaction update cardinfo set balance balance inputmoney where card ID card ID and card password card password insert transinfo card ID trans money trans date trans type remark values card ID inputmoney getdate 存入 无 declare money money select money balance from cardinfo where card ID card ID and card password card password print 交易正在进行中 print 卡号 card ID 余额 convert char 19 money print 交易成功 if error0 begin rollback transaction end commit transaction end 执行存储过程 exec proc inputMoney 1010 3576 1111 1111 500 123456 3 取钱存储过程 在存储过程中定义三个变量 card ID char 19 takemoney money 和 card password char 6 这三个变量是用来核对账号的 card ID char 19 用来核对卡号 是否正确 takemoney money 暂时存储需要取出的金额 并且用该变量存储的值与数 据库中的值进行比较 如果变量中的值大于数据库中存储的余额的 则不进行取款操作 17 card password char 6 则是用来核对密码的 存储过程中对所有需要核对的信息都进行 了准确的核对 例如核对账号是否处于挂失状态 核对账号密码是否正确 在核对完所 有的信息之后才准确地完成操作 取钱存储过程如下 create proc proc takeMoney card ID char 19 卡号 takemoney money 取款金额 card password char 6 密码 as declare errorsum int 错误基数 set errorsum 0 begin transaction 开始取款 if not EXISTS select card ID from cardinfo where card ID card ID and card password card password begin print 交易正在进行中 print 账号或密码输入不正确 请重输 end else begin if EXISTS select from cardinfo where isreportloss 是 判断卡是否挂失 begin print 交易正在进行中 print 帐户处于挂失状态则不可以取款 end else begin if cast takemoney as int 1000 判断取款金额是否为 100 的整数倍 begin print 交易正在进行中 print 取款金额应为 100 的整数倍 end else begin declare money money select money balance from cardinfo where card ID card ID and card password card password if takemoney money 取款金额不能超过卡上余额 begin print 交易正在进行中 print 余额不足 end else begin update cardinfo set balance balance takemoney where card ID card ID and 18 card password card password insert transinfo card ID trans money trans date trans type remark values card ID takemoney getdate 支取 无 declare balance money 余额 select balance balance from cardinfo where card ID card ID and card password card password if error0 begin rollback transaction end else begin commit transaction print 交易正在进行中 print 卡号 card ID 余额 convert char 19 balance print 交易成功 end end end end end 执行存储过程 exec proc takeMoney 1010 3576 1111 1111 100 123456 4 转账存储过程 在存储过程中定义三个变量 card ID char 19 card ID2 char 19 和 transmoney money 这三个变量是用来核对账号的 card ID char 19 用来核对转出卡号是否正确 transmoney money 暂时存储需要转出的金额 并且用这个变量中的值与数据库中存储的 余额值进行比较 如果这个转出值大于数据库中的余额值 则不能执行操作 card ID2 char 19 则是用来核对转入账号的 在转账的存储过程中 转入的账号核对是非常重要的 存储过程中对所有需要核对的信息都进行了准确的核对 例如核对账号是否处于挂失状 态 核对账号密码是否正确 在核对完所有的信息之后才准确地完成操作 转账存储过 程如下 create proc proc transaccounts card ID char 19 卡号 card ID2 char 19 transmoney money as begin tran 开始执行事务 declare money int 转账出钱 减去转出的金额 select money balance transmoney 验证是否超额 from cardinfo 19 where card ID card ID if money 1 验证余额 begin insert transinfo card ID trans money trans date trans type remark values card ID transmoney getdate 支取 无 update cardinfo set balance balance transmoney where card ID card ID and balance transmoney 0 update cardinfo 转账进钱 加上转出的金额 set balance balance transmoney where card ID2 card ID insert transinfo card ID trans money trans date trans type remark values card ID2 transmoney getdate 存入 无 print 恭喜您 转账成功 commit tran if error0 rollback tran return 0 end else begin print 余额不足 无法转账 end 执行存储过程 exec proc transaccounts 1010 3576 1111 2222 1010 3576 1111 1111 150 由于每个操作都用到了存储过程 所以列出以上具有代表性的存储过程 6 6 触发器的设计触发器的设计 1 建立触发器 Decre trigger 当用户注销账号时 执行 delete 过程 在 cardinfo 表 中出现 delete 过程时触发 执行 delete 用户表中的用户编号 功能 能够根据数据库中数据的变化来注销掉选中的用户信息 触发器 当用户注销账号时 执行delete过程 在cardinfo表中出现delete过程时触发 执行delete用户表中的用户编号 create trigger Decre trigger on cardinfo after delete 20 as declare card ID char 19 customer id int select card ID card ID customer id customer id from deleted begin print 开始注销用户信息 delete from userinfo where customer id customer id print 恭喜您 用户信息注销成功 end 注销的过程的创建 用户注销卡 核对卡账号密码 执行delete注销 create proc proc dropcard card ID char 19 card password char 6 as begin transaction if EXISTS select card id from cardinfo where card ID card ID and card password card password 核对卡号 begin print 请等待 print 开始注销卡 delete from cardinfo where card id card ID and card password card password print 注销成功 commit transaction end else begin print 您的卡不存在 无需注销 rollback transaction end 执行注销过程 exec proc dropcard 1010 3576 1111 1111 111111 21 七 操作结果七 操作结果 7 1 存款测试结果存款测试结果 在执行存储过程的时候同事执行两行查询语句 查询卡上存款前后的信息 进行对 照 来检测存储过程的设计是都正确 检测存储过程的执行是否正确 该存储过程执行 的是将卡号为 1010 3576 1111 1111 中的的 balance 存入 500 可以看到 balance 的值由开始的 100 变为 600 执行中没有出现报错现象 说明存储过程的设计和执行都是 正确的 执行结果如下图 图 7 1 存款前后结果查询 7 2 取款测试结果取款测试结果 在执行存储过程的时候同事执行两行查询语句 查询卡上取款款前后的信息 进行 对照 来检测存储过程的设计是都正确 检测存储过程的执行是否正确 该存储过程执 行的是将卡号为 1010 3576 1111 1111 中的的 balance 取出 100 可以看到 balance 的值由开始的 600 变为 500 执行中没有出现报错现象 说明存储过程的设计 和执行都是正确的 执行结果如下图 图 7 2 取款前后结果查询 22 7 3 转账测试结果转账测试结果 在执行存储过程的时候同事执行两行查询语句 查询卡上取款款前后的信息 进行 对照 来检测存储过程的设计是都正确 检测存储过程的执行是否正确 该存储过程执 行的是将卡号为 1010 3576 1111 2222 中的的 balance 转出 150 到卡号为 1010 3576 1111 1111 中去 可以看到 1010 3576 1111 1111 卡中 balance 的值由开始的 500 变为 650 1010 3576 1111 2222 卡中 balance 的值由开始的 10000 变为 9850 该过程的执行 更新了两个用户的信息 达到了信息交互的目的 执行中没有出现报错 现象 说明存储过程的设计和执行都是正确的 执行结果如下图 图 7 3 转账前后查询结果 7 4 注销结果测试 在执行注销过程时 需要注销卡号和与卡号对应的用户信息 一般是用户注销卡后 核对卡账号密码执行delete注销 当用户注销账号时 执行delete过程后 在cardinfo 表中出现delete过程时触发执行delete用户表中的用户编号 如执行 exec proc dropcard 1010 3576 1111 1111 123456 为注销卡号为 1010 3576 1111 1111 和密码为 123456 的卡号和用户信息 注销后查询结果与此卡号密码对应的用户信息为 1 曲先生 的用户信息页被注销 23 图 7 4 未注销前查询结果 图 7 5 注销后查询结果 24 八 事物设计八 事物设计 8 1 事物的创建事物的创建 数据库事务 Database Transaction 是指作为单个逻辑工作单元执行的一系列操作 事务处理可以确保除非事务性单元内的所有操作都成功完成 否则不会永久更新面向数 据的资源 通过将一组相关操作组合为一个要么全部成功要么全部失败的单元 可以简 化错误恢复并使应用程序更加可靠 一个逻辑工作单元要成为事务 必须满足所谓的 ACID 原子性 一致性 隔离性和持久性 属性 在我们的每个存储过程中都使用到了事物 在我们的存储过程中 我们将需要修改 数据库的代码加入事物中 保证代码能不被中断地顺利完成 事物的代码结构为 begin tran insert update delete commit rollback 当事物正常运行完 成是 执行 commit 语句 提交事物 如果遇到故障 则执行 rollback 语句 事物回滚 以保证数据库的正确性和完整性 一下为事物实例 create proc proc takeMoney card ID char 19 卡号 takemoney money 取款金额 card password char 6 密码 as declare errorsum int 错误基数 set errorsum 0 begin transaction 开始事物 if not EXISTS select card ID from cardinfo where card ID card ID and card password card password begin print 交易正在进行中 print 账号或密码输入不正确 请重输 end else begin if EXISTS select from cardinfo where isreportloss 是 判断卡是否挂失 begin print 交易正在进行中 print 帐户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省东莞市凤岗镇统编版2024-2025学年四年级下册期末考试语文试卷(含答案)
- 社区治理基础知识培训课件
- 买卖公司财产合同范本
- 科思股份合同范本
- 汇合发展合同范本
- 杭州安置房合同范本
- 农村住宅租用合同范本
- 社区应急知识培训课件简报
- 餐饮清洗油烟合同范本
- 父母首付赠与合同范本
- 小学语文新课程标准最新版2022
- 室外雨污水、消防管网施工方案
- 疫情防控实战演练方案脚本
- 资产评估事务所投标服务方案总体工作方案评估工作关键性内容及重难点分析
- 思想道德与法治全册教案
- (高职)旅游景区服务与管理电子课件完整版PPT全书电子教案
- 拆卸与安装油箱加油管
- 某国有企业精细管理降本增效经验交流汇报材料企业降本增效.doc
- 沪科版七年级数学上册全套ppt课件
- SCH壁厚等级对照表
- 海洋声学基础讲义吴立新
评论
0/150
提交评论