还剩1页未读,继续阅读
文本内容:
提示不要把答案先发给学生,实验结束后再公布答案要让学生先自己思考做题,老师对学生不会的题目适当提示,一题题解决困惑实验事务处理■参考代码14/*继续使用实验创建的银行储蓄数据库,客户信息表、账户信息customerinfo表、交易信息表三个表的表结构见表表*/accountinfo transInfo-18〜-20题修改实验创建的转账存储过程,使用事务111-先查看表中数据代码select from accountinfo selectfrom transInfo-创建存储过程的代码,加入了事务处理,将四个操作作为一个事务--为了验证事务的效果,特意将判断取款账号余额是否符合的语句注释上create procp_zz_tran一取款账号和密码@zhl char19,@mm char6,--存款账号和转账金额@zh2chart19,@je decimal20,2,--输出操作结果@mess varcharlOOoutputbegin(一判断取款账号是否正常if notexists selectaccountID from accountinfo where正常)accountID=@zhl and accountstate=begin二转出账号不存在,或已经挂失!,select@mess+@zhl+returnend(--判断取款密码是否正确if notexists select*fromaccountinfo)where accountID=@zhl andpassword=@mmbeginselect@mess=转出账号密码错误!1returnend(--判断存款账号是否正常if notexists selectaccountID fromaccountinfo正常)where accountID=@zh2andaccountstate=beginselect@mess廿转入账号+@zh2+不存在,或已经挂失!1returnend)declare@ye decimal120,2一查询取款账号余额select@ye=accountMoney fromaccountinfowhere accountID=@zh1()-判断取款账号余额是否符合—if@ye@je+1—begin廿余额不足,请重新输入转账金额!’—select@mess—return—end-开始事务,保证多个操作同时成功或失败begin tranINSERTINTO transInfoaccountID,transType,transMoney;支取:-交易信息表插入存款记录VALUES@zhl@je transInfo转账失败!账号转出出错,if@@error!=0begin select@mess=+@zhl+rollback return end updateaccountinfo setaccountMoney=accountMoney-@je取款卡减少余额WHERE accountID=@zhl—if@@error!=0begin二转账失败!账号;更新余额出错,select@mess4@zhl+rollback returnendINSERTINTO transInfoaccountID,transType,transMoney存入;--交易信息表插入存款记录VALUES@zh2@je transInfo转账失败!账号;转入出错,if@@error!=0begin select@mess=’+@zh2+rollback returnend updateaccountinfo setaccountMoney=accountMoney+@je一存款卡增加余额WHERE accountID=@zh2if@@error!=0begin,转账失败!账号,更新余额出错,select@mess=+@zh2+rollback一提交事务转账成功!账号;returnendcommit transelect@mess=’+@zhl+转出』元,ltrimstr@je+End转账操作,对余额不足的数据进行转账操作2-从账户转元给事先查看实际只有元10051001004,100540-转款金额不足,应该转账失败select*fromaccountinfowhere accountIDin
1004.1005select*from transInfowhereaccountID in1004,1005口结果以消息account IDsavingType moneyType openDate openMoney accountMoney password活期人民币1|1004j2023-06-1722:19:
51.
58730.
001030.00666666活期人民币210052023-06-1722:19:
51.
58740.00,4090]]666666transID transDateaccountID transTypetransMoney bz1|41004存入
30.00NULL2023-05-0600:00:00000L.存入252023-05-0600:00:00,
000100540.00NULL存入3132023-06-1722:44:
17.
50010041000.00NULL--从账户转元给账户密码是默认的10051001004,1005666666(declare@mm varchar100jexec p_zz_tran*1005,,,666666\,1004\100,@mm outputselect@mmS结果盘消息(无列名)执行结果不是原来的1:余额余足请童薪输入转账金额!而是下面的结果,检查约束起作用了B消息消息级别状态过程第行547,16,0,tr_upye_cur,18语句与约束”冲突该冲突发生.于数据库“语句已UPDATE CHECKCK_accountin_accou_0DAF0CB0”bank”终止--再次查看表中数据,数据没有变化-出错的语句是第二条语句,第一条语句已经成功,但表中数据都没有变化insert-因为加入了事务,四个语句中任何一个出错,都会全部回滚其他语句的结果剧结果二)消息accountID savingTypemoneyTypeopenDateopenMoneyaccountMoney1004活期活期人民币人民2023-06-1722:19:
51.
58730.
001030.0011005币2023-06-1722:19:
51.
58740.
0040.002transID transDateaccountID transTypetransMoney bz|4|2023-05-0600:00:
00.0001004存入
30.00NULL1252023-05-0600:00:
00.0001005存入
40.00NULL存入3132023-06-1722:44:
17.
50010041000.00NULL。