实验六触发器实验
一.实验目的:
掌握数触发器的使用
二.实验内容和要求
定义BEFORE触发器和UPDATE触发器。
能够理解不同类型触发器的作用和执行原理,验证触发器的有效性
三.实验重点和难点
实验重点:触发器的定义
实验难点:利用触发器实现较为复杂的用户自定义完整性
四.实验内容
1、AFTER触发器
(1)在Lineitem表上定义一个UPDATE触发器,当修改订单明细(即修改订单明细截个extendprice、折扣discount、税率tax)时,自动修改Orders 的TotalPrice,以保持数据的一致性。
Total price = totalprice+extendedprice*(1-discount)*(1+tax)
(2)在lineitem表上定义一个INSERT触发器,当增加一项订单明细时,自动修改该订单Orders的TotalPrice,以保持数据的一致性
(3)在Lineitem表上定义一个DELETE触发器,当删除一项订单明细时,自动修改订单Orders中的TotalPrice,以保持数据的一致性
(4)验证触发器lineitem_price_update
/*查看2号订单的含税折扣总价totalprice*/
/*激活触发器:修改2号订单第一个明细项的税率,该税率增加0.5%*/
/*再次查看2号订单的含税折扣总价是否有变化*/
2、BEFORE触发器
(1)在Lineitem表上定义一个BEFORE UPDATE触发器,当修改订单明细中的数量(quantity)时,先检查PartSupp中的可用数量availqty是否足够
(2)在Lineitem表上定义一个BEFORE INSERT触发器,当插入订单时,先检查PartSupp中的可用数量availqty是否足够
(3)在Lineitem表上定义一个BEFORE INSERT触发器,当删除订单时,该订单明细项订购的数量要归还对应的零件供应记录
(4)验证触发器lineitem_quantity_update
/*查看3号订单第一个明细项的零件和供应商编号、订购数量、可用数量*/ /*激活触发器:修改3号订单第一个明细项额订购数量*/
/*再次查看3号订单第一个明细项的相关信息,已验证触发器是否起作用*/ 删除触发器
删除触发器lineitem_price_update.
五.实验总结
通过这次试验,我基本掌握了触发器的使用,需要用到 delimiter来定义结束符,@定义一个临时变量,但是在验证触发器有没有成功时我的一直不成功,问了同学后才解决了问题,这次试验学到了很多知识,更好的理解了触发器。