A、参照完整性约束
B、将程序与数据分开
C、运用数据字典
D、最大限度地减少存放重复数据的独立文件
实验十三:触发器 一、实验目的 理解触发器的概念和作用;了解触发器的分类及触发条件;掌握触发器的定义及应用。 二、实验原理 使用CREATE TRIGGER语句定义触发器,ALTER TRIGGER语句修改触发器,DROP TRIGGER语句删除触发器。触发器分AFTER/FOR和INSTEAD OF两种类型:AFTER/FOR类型的触发器是在相应的触发语句(insert、delete、update)执行完后被触发的。如果触发语句对应的表上有完整性约束,这些完整性约束必须不违背时,相应的触发语句才能执行,然后才能触发对应的AFTER/FOR类型的触发器。INSTEAD OF类型的触发器会在触发语句(insert、delete、update)执行之前被触发,并取代相应的触发语句。在表或视图上,每个INSERT、UPDATE或DELETE语句只能创建一个INSTEAD OF类型的触发器。SQL SERVER为每个触发器都创建了两个临时表INSERTED表和DELETED表,这两个表的逻辑结构与被触发器作用的表一样,用户可以读取这两个表的内容,但不能对它们进行修改,触发器执行完后,这两个表也会自动删除。当执行INSERT时,INSERTED表中保存要向表中插入的所有行;当执行DELETE时,DELETED表中保存要从表中删除的所有行;当执行UPDATE时,修改前的行保存在DELETED表中,修改后的行保存在INSERTED行中。 三、实验设备 安装有SQL SERVER 2012的计算机。 四、实验示例 1、写一个允许用户一次只删除一条员工记录的触发器。 create trigger tr_emp on employee for delete as declare @row_cnt int select @row_cnt=count(*) from deleted if @row_cnt>1 begin print '删除操作不允许删除多条人事表数据!!!' rollback transaction end delete from employee where sex='女' --显示'删除操作不允许删除多条人事表数据!!!' 2、创建一个触发器,只能接受女员工 create trigger employee_insert2 on employee after insert as if exists(select * from inserted where sex='男') begin print '本公司不接受男员工!' rollback transaction end else print '欢迎加入本公司!' insert employee values('E0021','林中正','男','管理','总经理','1974-10-01','1953-05-04',100000,'13879765667','上海市') --显示'本公司不接受男员工!' 3、定义一触发器,保证新添加的员工的工资不能超过5000元 create trigger employee_insert on employee after insert as if(select salary from inserted)>5000 begin print '新添加的员工的工资不能超过5000元!' rollback end 五、实验内容 l 针对bookshop数据库,完成以下操作: 1、针对employee表写一个DELETE触发器,显示删除的员工人数。 2、针对employee表写一个UPDATE触发器,限制每次工资额的变动不能超过原工资的20%。 3、定义一个触发器,保证新添加的员工的工资不能超过5000元 4、对sale_item表创建一个触发器,当插入一条销售明细记录时,如果该记录的产品数量超过5,则显示“欢迎成为本公司的VIP会员!” 5、定义一个触发器,当修改sale_item表中的销售数量或者价格时,自动更新sales表中的订单金额。 6、定义一个触发器,实现对sales表的级联删除操作。 7、定义一个触发器,实现对books表的级联删除操作。
A、它一定消除了非主属性对码的部分函数依赖
B、它一定消除了主属性对码的部分函数依赖
C、它一定消除了非主属性对码的传递函数依赖
D、该关系模式一定属性2NF
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!