1.实验目的
掌握数据库触发器的设计和使用方法
2.实验内容和要求
定义 BEFORE 触发器和 AFTER 触发器。能够理解不同类型触发器的作用和执行原理,验证触发器的有效性。
3.实验步骤
(1)AFTER 触发器
①在 Lineitem 表上定义一个 UPDATE 触发器,当修改订单明细(即修改订单明细价格
extendedprice、折扣 discount、税率 tax)时,自动修改订单 Orders 的 TotalPrice,以保持数据一致性。
SQL语句:
查看触发器:
触发前查询:
修改订单明细:
触发后查询:
②在 Lineitem 表上定义一个 INSERT 触发器,当增加一项订单明细时,自动修改订单
Orders 的 TotalPrice,以保持数据的一致性。
SQL语句:
查看触发器:
插入订单明细:
插入前:
插入后:
查询:
③在 Lineitem 表上定义一个 DELETE 触发器,当删除一项订单明细时,自动修改订单Orders 的 TotalPrice,以保持数据一致性。
SQL语句:
查看触发器:
删除明细:
删除前查询:
删除后查询:
(2)BEFORE 触发器
①在 Lineitem 表上定义一个 BEFORE UPDATE 触发器,当修改订单明细中的数量(quantity)时,先检查供应表 PartSupp 中的可用数量 availqty 是否足够。
SQL语句:
验证:
在没触发之前查询:
修改quantity:
再查询:
②在 Lineitem 表上定义一个 BEFORE INSERT 触发器,当插入订单明细时,先检查供应表 PartSupp 中的可用数量 availqty 是否足够。
SQL语句:
查询:
插入数据:
再查询:
③在 Lineitem 表上定义一个 BEFORE DELETE 触发器,当删除订单明细时,该订单明细项订购的数量要归还于对应的零件供应记录。
SQL语句:
查询:
删除:
再查询: