实验二、编写ORALCE触发器与过程

本文介绍了如何在Oracle数据库中创建触发器和过程来管理考勤记录。通过添加新列,建立考勤表和汇总表,然后创建触发器,当考勤表发生变化时自动更新学生评价分数。同时,定义了一个过程用于计算班级考勤汇总并将结果写入到班级评价中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验二、编写ORALCE触发器与过程
一、在stud_417表和class_417表中加入一列sum_evaluation
alter table stud_417 add (sum_evaluation number default 100);
alter table class_417 add(sum_evaluation number default 100);
commit;
二、建立上课考勤总表Attend_417


create table Attend_417
(
riqi date,
unit char,
sno varchar2(10) references stud_417(sno),
cno varchar2(10) references class_417(cno),
condition varchar2(10),
primary key(riqi,unit,sno)
);
alter table attend_417 add constraint ck_attend_con check2016/5/7
(contidion in ('正常','迟到','请假','旷课'));
alter table attend_417 add constraint ck_attend_unit check
(unit in ('1','2','3','4','5'));


三、建立个人考勤汇总表stud_attend和班级考勤汇总表class_attend。
1.个人考勤汇总表stud_attend
create table stud_attend 
(
sno varchar2(10) primary key,
beginDate date,
endDate date,
zhengChangCiShu number,
chiDaoCiShu number,
kuangKeCiShu number,
qingJiaCiShu number,
koufen number
);
2.班级考勤汇总表class_attend
create table class_attend
(
cno varchar2(10) primary key,
beginDate date,
endDate date,
zhengChangCiShu number,
chiDaoCiShu number,
kuangKeCiShu number,
qingJiaCiShu number,
koufen number
);


/*修改主键 为cno,beginDate,endDate*/
三、建立触发器,当对考勤表Attend表进行相应插入、删除、修改时,对stud表的sum_evaluation 数值进行相应的数据更新。
create or replace trigger attend_stud 
before insert or update or delete on Attend_417
for each row 
begin 
if inserting then
if :new.condition = '迟到' then
update stud_417 set sum_evaluation=sum_evaluation-2 where :new.sno = stud_417.sno;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值