数据库实验:存储过程与触发器设计

一、实验内容
1、创建一个存储过程,计算employee表中的员工人数,并存储到一个局部变量中,并输出该变量结果,尝试调用存储过程。
2、创建一个存储过程,比较两个员工的实际收入,若前者比后者高 就输出0,否则输出1,员工用其员工编号识别
3、创建触发器,在employee表中删除员工信息的同时将salary表中该员工的信息删除,以确保数据完整性。创建完成后尝试删除employee表中的一行数据,然后查看salary表中的变化情况
4、当修改employee表时,若将employee表中的员工工作时间增加一年,则将收入增加500,增加两年则收入增加1000,以此类推
思考题:
研究database3中的insertOrders.sql和insertPsrtSupp.sql两个存储过程文件,分析其产生数据的原理以及存储过程主体语句功能

二、实验过程
1、use dbem;
delimiter
create procedure test (out amount1 int)
begin
declare amount int;
set amount=(select count(*)from employee);
set amount1=amount;
end
delimiter ;
call test(@amount1);
select @amount1;
在这里插入图片描述
2、delimiter
create procedure comp(in id1 char(6),in id2 char(6),out bj int)
begin
declare sr1,sr2 float;
select Income-Outcome into sr1 from salary
where employeeID=id1;
select Income-Outcome into sr2 from salary
where employeeID=id2;
if sr1>sr2 then set bj=0;
else set bj=1;
end if;
end
delimiter ;
call comp(‘000001’,‘108991’,@bj1);
select @bj1;
在这里插入图片描述
3、create trigger delete1 after delete
on employee for each row
begin
delete from salary where employeeID=old.employeeID;
end
delimiter ;
SET SQL_SAFE_UPDATES = 0;
delete from employee
where employeeID=504209;
delimiter
在这里插入图片描述
在这里插入图片描述
4、create trigger employee_update after update
on employee for each row
begin
update salary set income=(income+(new.workYear-old.workYear)*500);
end
delimiter ;
update employee
set workYear=8
where employeeID=“000001”;

修改前:
在这里插入图片描述
在这里插入图片描述
修改后:
在这里插入图片描述
在这里插入图片描述
三、思考题
对于insertOrders:将customer数量的值赋值给customerCount。当p_orderCount大于零时,将tmpOrder的值加一,并将它赋值给NewOrderKey。将customerCount乘以一百再乘以一个随机值后与它本身求模后的值赋值给tmpCust。最后向Orders里插入数据,实现核心功能。

对于insertPartSupp:将Part,Supplier数量值分别赋值给partCount,supplierCount。当p_partsuppCount大于零时,将partCount,supplierCount乘以一百再乘以一个随机值后与它本身求模后的值分别赋值给tmpPart,tmpSupp。最后实现的核心功能是向PartSupp中插入数据。

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值