首页 > 代码库 > 数据库基础(数据库事务及存储过程的小练习)
数据库基础(数据库事务及存储过程的小练习)
数据库事务:
数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作。
事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。
设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:
更新客户所购商品的库存信息
保存客户付款信息--可能包括与银行系统的交互
生成订单并且保存到数据库中 · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等,都将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。
数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。
begin tran (或transaction) --开始事务
commit --提交事务
rollback --回滚事务
事务特性:
A原子性(atomicity)
C一致性(consistency)
I隔离性(isolation)
D持久性(durability)
@@ERROR 是判断事务有没有错的条件,无错时值为0,有错时值不为0。
事务创建以及使用示例:
练习:创建三个表并写一个简单的存储过程,要求可以进货、出货并打印小票。
在没有此货物并且为进货时,添加上这一行信息;
在没有此货物并且为出货时,打印没有此货物!
下面开始执行语句:
语句一:进货,编号为1001的货物新增10个
语句二:编号为1001的货物出货5台
在每次为出货并且数量够的情况下,会打印小票
语句三:新进货编号为1021
语句四:出货,编号为1022的货物出货,但是仓库中没有此编号的货物
数据库基础(数据库事务及存储过程的小练习)