触发器的使用

触发器(trigger)是oracle中功能强大的代码执行单元,定义个数类似函数和存储过程;触发器不允许用户显示调用也不带有返回值,它是在满足特定条件时自动触发执行的。触发器通常由专门数据库开发人员或者dba开发制定。

触发器的分类:1、DML(数据操纵语言)触发器,是最常用的触发器,通常在执行insert、update、delete时触发;
                                 2、Instead of 触发器,建立在视图上的触发器,通常不提倡使用;
                                 3、DDL(数据定义语言)触发器,当发生create、alter、drop、truncate时使用;
                                 4、DB触发器,当数据库系统发生startup、shutdown、logon、logoff 时触发DB触发器。

一、语句级触发器
       CREATE OR REPLACE TRIGGER tri_update_sales --该触发器默认为语句级,即不管更新多少条记录只触发一次
       BEFORE UPDATE--在此动作之前(也可以使用after)
       ON sales--在该表上
       REFERENCING OLD AS O NEW AS N--引用对象时使用对应别名
       BEGIN
            dbms_output.put_line('触发器提示了。。。');
       END;

       UPDATE sales SET salquantity = salquantity+1;

二、行级触发器
       SELECT * FROM sales
       CREATE OR REPLACE TRIGGER tri_update_sales 
       BEFORE UPDATE
       ON sales
       REFERENCING OLD AS O NEW AS N
       FOR EACH ROW
       BEGIN
            dbms_output.put_line('触发器提示了。。。');
       END;

       UPDATE sales SET salquantity = salquantity+1;

三、将修改的提示写进日志记录表中
        CREATE OR REPLACE TRIGGER tri_insert_emp
        BEFORE INSERT
        ON emp
        REFERENCING OLD AS O NEW AS N
        BEGIN
            INSERT INTO tri_emp_log VALUES(seq_trig.nextval,'insert',DEFAULT);
        END;

        INSERT INTO emp VALUES(134,'沉香','男',to_date('1975/4/2', 'yyyy/mm/dd'),45957657,'南京','NO002');

       四、触发器的启用、禁用和删除
       alter trigger tri_insert_emp enable;
       alter trigger tri_insert_emp disable;
       drop trigger tri_insert_emp;

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值