资源描述
实验十四 事务处理
学号 姓名
一、 实验目的
1、 加深事务概念的理解
2、 掌握SQL Server事务定义的方法
3、 学会使用保存点机制设置回滚点
二、 实验平台
SQL SERVER2008
三、 实验内容和要求
假设某客户要求在companyinfo一个订单上追加购买一种商品,这是需要分别在订单主表p_order和订单明细表orders上更新相关信息,故可定义一个事务来完成。
1. 假设某客户要求在订单43659上追加购买产品772(772是产品编号)2件,请定义一个事务insertorder1
1) 首先执行查询语句
Select * from p_order where 订单ID='43659' and 产品ID='772'
Select * from Orders where orderID='43659'
2) 定义一个事务insertorder1完成数据库的更新。要求顾客购买的商品信息既要在订单明细表p_order中更改内容,也要修改订单在订单主表orders上的相关日期信息,这两件事要么都做,要么都不做。
语句如下:
a) 事务开始
b) 更新订单明细表p_order中的订货数量;
c) 使用全局变量@@error测试SQL命令的执行情况,如果失败(若不为0则表示执行失败),则显示字符串“更新数量操作失误”,并返回;如果成功,则继续更新订单主表orders中的下单日期(为当天日期)、货物要求日期(为当天日期往后推25天)、运输日期(当前日期往后推3天),如果失败则显示字符串‘更新日期操作失误’并回滚,如果都成功,则提交事务。
3) 再一次查询订单表,查看结果,将截图粘贴于下方
2. 假设某客户要求在订单43659上追加购买产品773(773是产品编号)2件,请定义一个事务insertorder2完成数据库的更新,要求订单明细表更新成功后设置一个保存点before_insert_chk。要求即使是操作主表时发生了错误,事务对订单明细表的更新还是有效的。
语句如下:
展开阅读全文