一、实验目的:
1、能够按要求编写相应的触发器实现数据库完整性控制并验证
2、扩展学习Instead of触发器,掌握其创建和使用方法
二、实验内容:
1. 创建触发器,当修改Orders表中某行数据的mShippingCharges和mGiftWrapCharges时,要修改相应行的总价mTotalCost,以保证合计总花费结果的正确性。
(1)sql语句
(2) 执行结果
2. 创建after触发器,禁止修改ToysBrand表的cBrandid列的值。
(1)sql语句
(2)执行结果
3. 创建Instead of触发器,禁止对Toys表进行删除操作。
(1)sql语句
(2)执行结果
4. 创建触发器,在Toys表中插入数据或者修改数据时,要保证siLowerAge小于siUpperAge的值,否则不能插入或修改。
(1)sql语句
(2)执行结果
5. 创建触发器,禁止对Shoppers表进行任何更新(增删改)操作。
(1)sql语句
(2) 执行结果
6. 当Toys表中的玩具价格mToyRate增加时,创建一个触发器使得Toys表的mToyRate的属性的平均值不超过28美元,并且最大值不超过55美元。
7. 对Shipment表进行插入操作或者修改操作时,应保证dShipmentDate小于当前日期。
(1)sql语句
(2)执行结果
8. Toys表和Toybrand表存在相同属性cBrandid,不使用外键约束方式,仅使用触发器来实现两个表之间对于删除操作的参照完整性规则(两种方式:Restrict和Cascade),分别编写触发器。
(1)方法1:Restrict
1)Toys表的Restrict触发器
2) Toybrand表的Restrict触发器
(2)方法2:Cascade
1)Toys表的Cascade触发器
2)Toybrand表的Cascade触发器
(3)执行结果