【Oracle】数据库应用技术上机-week15-触发器trigger

1.创建一个触发器,当xs表中记录被删除时,请备份下删除的记录,方式:写到新建表xs_del中,以备查看。

SQL> set serveroutput on
SQL> $imp system/test tables=(xs,kc,xs_kc)   file=c:\xskc.dmp
SQL> create table xs_del as select * from xs;
 
Table created
 
SQL> truncate table xs_del;
 
Table truncated
 
SQL> select * from xs_del;
 
XH     XM     ZYM    XB CSSJ        ZXF BZ
------ ------ ------ -- ----------- --- --------------------
 
SQL> select * from xs;
 
XH     XM     ZYM    XB CSSJ        ZXF BZ
------ ------ ------ -- ----------- --- --------------------
061101 王林   计算机 男 1986/2/10    50 
101112 李明   计算机 男 1986/1/30    36 
001    张琼   计算机                   45 三好学生
121112 王小二 计算机 男 1986/1/30    36 

触发器t1:

create or replace trigger t1
  before delete on xs  
  for each row
declare
  -- local variables here
begin
  insert into xs_del(xh,xm,zym,xb,cssj,zxf)
  values (:old.xh,:old.xm, :old.zym, :old.xb, :old.cssj,:old.zxf);
end t1;
SQL> delete from xs where xh='121112';
 
1 row deleted
 
SQL> select *from xs_del;
 
XH     XM     ZYM    XB CSSJ        ZXF BZ
------ ------ ------ -- ----------- --- --------------------
121112 王小二 计算机 男 1986/1/30    36 
 
SQL> select * from xs;
 
XH     XM     ZYM    XB CSSJ        ZXF BZ
------ ------ ------ -- ----------- --- --------------------
061101 王林   计算机 男 1986/2/10    50 
101112 李明   计算机 男 1986/1/30    36 
001    张琼   计算机                   45 三好学生

2.监控用户对xs表的操作,要求:当xs表执行插入、更新和删除3种操作后在sql_info表中给出相应提示和执行时间。

SQL> create table sql_info(info varchar2(10),time date);
 
Table created
 

触发器t2:

create or replace trigger t2
  after delete or insert or update on xs   
  for each row
declare
  -- local variables here
  v_info sql_info.info%type;
begin
  if inserting then
    v_info:='插入';
  elsif deleting then
    v_info:='删除';
  else
    v_info:='更新';
  end if;
  insert into sql_info values(v_info,sysdate);
end t2;
SQL> select * from sql_info;
 
INFO       TIME
---------- -----------
  
SQL> update xs set zxf=60 where xm='张琼';
 
1 row updated
 
SQL> select * from sql_info;
 
INFO       TIME
---------- -----------
更新       2021/12/17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值