触发器的实现

SELECT * FROMLOG;

CREATETABLELOG(

IDNUMBER(4),

CONTENT VARCHAR2(100)

)

 

CREATESEQUENCE T_ADD----创建序列

STARTWITH1—开始值

INCREMENTBY1—步长

NOMAXVALUE

NOMINVALUE

NOCYCLE

CACHE30;

 

SELECT * FROM STUDENT;

 

CREATEORREPLACE TRIGGER TG_ADD_ST

BEFORE INSERT

ON STUDENT

FOR EACH ROW

BEGIN

 SELECT T_ADD.Nextval INTO :new.snoFROM dual;

 

END;

 

 

INSERTINTOSTUDENT(SNO,SNAME,SAGE,SSEX)VALUES(NULL,'傻子','22','');

 

SELECT * FROMLOG;

 

CREATE OR REPLACE TRIGGER TG_UP_DEL_ADD_LOH

AFTERUPDATEORDELETEORINSERT

ON STUDENT

FOR EACH ROW

BEGIN

  IF UPDATING THEN

         INSERTINTOLOGVALUES(T_ADD.NEXTVAL,''||SYSDATE||'更新了'||:OLD.SNO||' '||:OLD.SNAME

         ||' '||:OLD.SAGE||' '||:OLD.SSEX||',修改为:'||:NEW.SNO||' '||:NEW.SNAME||' '||:NEW.SAGE||' '

         ||:NEW.SSEX);

  ELSIF DELETING  THEN

         INSERTINTOLOGVALUES(T_ADD.NEXTVAL,'你于'||SYSDATE||'删除的数据为:'||:OLD.SNO||' '||:OLD.SNAME||' '

         ||:OLD.SAGE||' '||:OLD.SSEX);

  ELSIF INSERTING THEN

         INSERTINTOLOGVALUES(T_ADD.NEXTVAL,'你于'||SYSDATE||'插入的数据为:'||:NEW.SNO||' '||:NEW.SNAME||' '||:NEW.SAGE

         ||' '||:NEW.SSEX);

 

  ENDIF;

END;

 

INSERTINTO STUDENT VALUES(T_ADD.NEXTVAL,'憨憨','22','');

UPDATE STUDENT SET  SNO='S018', SNAME='小红', SAGE='32', SSEX=''WHERE SNO='s001';

 

 

SELECT * FROM STUDENT;

SELECT * FROMLOG;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值