实验4 触发器
1、通过序列和触发器实现借阅表中借阅流水号字段的自动递增。
Create or replace sequence bwnum_id
Minvalue 1
Maxvalue 1.0E28
Start with 1
Increment by 1
Cache 20;
Create or Replace Trigger tri_bwnum_id
Before Insert On borrow
For Each Row
Begin
Select bwnum_id.Nextval Into :new.bwnum
From DUAL;
End;
2、通过序列和触发器实现预约表中预约流水号字段的自动递增
Create sequence pnum_id
Minvalue 1
Maxvalue 1.0E28
Start with 1
Increment by 1
Cache 20;
Create or Replace Trigger tri_pnum_id
Before Insert On preborrow
For Each Row
Begin
Select pnum_id.Nextval Into :new.pnum
From DUAL;
End;
3、修改实验三借书功能的存储过程。
该存储过程要求:
(1)借书时输入借书证号,图书编号。
(即该函数有2个输入参数)
(2)借书时,借书日期为系统时间。
*该存储过程主体部分只有insert into语句。
create or replace Procedure p_borrow
(P_BNUM IN BORROW.BNUM%TYPE,
P_RNUM IN BORROW.RNUM%TYPE)
as
begin
insert
into BORROW (BNUM,RNUM,BDATE)
values(P_BNUM,P_RNUM,TO_CHAR(SYSDATE(),'YY/MM/DD'));
commit;
end;
4、建立与借书存储过程相对应的触发器,当借阅表中加入借阅信息时,该触发器触发,自动修改所借图书的是否借出改为‘是’。
Create or Replace Trigger tri_borrow_insert
After Insert On borrow
For Each Row
Begin
update book set bborrow='是' where bnum=:new.bnum;
End;
5、修改实验三还书功能的存储过程。
该存储过程要求:
(1)还书时输入借书证号,图书编号。
(即该函数有2个输入参数)(2)还书时,还书日期为系统时间。
*该存储过程主体部分只有一条UPDATE语句。
Create or replace Procedure p_return
(P_BNUM IN BORROW.BNUM%TYPE,
P_BMNUM IN BORROW.BMNUM%TYPE)
as
begin
update borrow
set rdate=to_char(sysdate,'yyyy/mm/dd')
where bnum=p_bnum and bmnum=p_bmnum;
commit;
end;
6、建立与还书存储过程相对应的触发器,当借阅表中填入还书日期时,该触发器触发,自动修改所还图书的是否借出为‘否’。
Create or Replace Trigger tri_borrow_update
After update On borrow
For Each Row
Begin
update book set bborrow='否' where bnum=:new.bnum;
End;。