第11章 事务和锁-习题解答_第1页
第11章 事务和锁-习题解答_第2页
第11章 事务和锁-习题解答_第3页
第11章 事务和锁-习题解答_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE254PAGE25511.3习题11一、选择题1.事务的()特性要求事务必须被视为一个不可分割的最小工作单元。A.原子性 B.一致性C.隔离性 D.持久性正确答案:A2.事务是数据库进行的基本工作单位。如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的更新被恢复原状,好像整个事务从未有过这些更新,这样保特了数据库处于()状态。A.安全性 B.一致性C.完整性 D.可靠性正确答案:B3.下列关于MySQL中事务的说法,错误的是()。A.事务就是针对数据库的一组操作B.事务中的语句要么都执行,要么都不执行C.事务提交后其中的操作才会生效D.提交事务的语句为SUBMIT正确答案:D4.对并发操作若不加以控制,可能会带来数据的()问题。A.不安全 B.死锁C.死机 D.不一致正确答案:D5.事务中能实现回滚的语句是()。A.TRANSACTION B.COMMITC.ROLLBACK D.SAVEPOINT正确答案:C6.MySQL的事务不具有的特征是()。A.原子性 B.隔离性C.一致性 D.共享性正确答案:D7.MySQL默认隔离级别为()。A.READUNCOMMITTED B.READCOMMITTEDC.REPEATABLEREAD D.SERIALIZABLE正确答案:C8.一个事务读取了另外一个事务未提交的数据,称为()。A.幻读 B.脏读C.不可重复读 D.可串行化正确答案:B二、练习题1.在数据库library中,创建存储过程proc_borrow_update,实现在borrow表上执行update语句的事务,并执行存储过程。CREATEPROCEDUREproc_borrow_update()BEGINDECLAREEXITHANDLERFORSQLEXCEPTIONBEGINROLLBACK;SELECT'Anerroroccurred,transactionrolledback.';END;STARTTRANSACTION;UPDATEborrowSETRefundDate=CURDATE()WHERERefundDateISNULL;COMMIT;SELECT'Transactioncompletedsuccessfully.';END以上存储过程会将borrow表中未归还的记录的RefundDate列更新为当前日期。在存储过程中,使用STARTTRANSACTION开始事务,COMMIT提交事务。如果在事务过程中发生异常,使用ROLLBACK回滚事务,并返回错误信息。最后,存储过程会返回一个成功完成事务的消息。在library数据库中执行该存储过程,如下:CALLproc_borrow_update();2.开启一个事务,向book表中添加一条记录,并设置保存点。然后再删除该记录,并回滚到事务的保存点,提交事务。3.开启一个事务,在reader表上进行查询、插入和更新操作,并提交该事务。STARTTRANSACTION;--查询操作SELECT*FROMreaderWHEREReadID='112208';--插入操作INSERTINTOreader(ReaderID,ReaderName,Sex,Phone)VALUES('333001','王五','男',);--更新操作UPDATEreaderSETPhone=WHEREReadID='112208';COMMIT;4.在数据库library中,设计一个存储过程,在bank表中,从汇款账户中减去指定金额,并将该金额添加到收款账号中,完成银行转账业务。设计一个名为proc_bank_transfer的存储过程,在bank表中实现从汇款账户中减去指定金额,并将该金额添加到收款账号中,完成银行转账业务:CREATEPROCEDUREproc_bank_transfer(INsender_accountVARCHAR(50),INreceiver_accountVARCHAR(50),INtransfer_amountDECIMAL(10,2))BEGINDECLAREsender_balanceDECIMAL(10,2);DECLAREreceiver_balanceDECIMAL(10,2);--检查汇款账户余额是否足够SELECTbalanceINTOsender_balanceFROMbankWHEREaccount_number=sender_account;IFsender_balance<transfer_amountTHENSIGNALSQLSTATE'45000'SETMESSAGE_TEXT='Insufficientbalanceinthesenderaccount.';ENDIF;--开始事务STARTTRANSACTION;--从汇款账户中减去指定金额UPDATEbankSETbalance=balance-transfer_amountWHEREaccount_number=sender_account;--将指定金额添加到收款账号中UPDATEbankSETbalance=balance+transfer_amountWHEREaccount_number=receiver_account;--提交事务COMMIT;SELECT'Transfercompletedsuccessfully.';END以上存储过程接受三个参数:sender_account(汇款账号)、receiver_account(收款账号)和transfer_amount(转账金额)。在存储过程中,首先检查汇款账户的余额是否足够,如果不足够则抛出异常。然后,使用STARTTRANSACTION开启一个事务,在事务中先从汇款账户中减去指定金额,再将该金额添加到收款账号中。最后,使用`COMMIT`提交事务,将转账操作永久保存到数据库中。执行该存储过程,如下:CALLproc_bank_transfer('sender_account_number','r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论