文档章节

oracle表触发器

Wickywe
 Wickywe
发布于 2015/03/27 10:59
字数 239
阅读 6
收藏 0


create or replace trigger tr_kp_firetool

       after insert or update or delete   on kp_firetool
  for each row


       
begin
         if inserting then
           if(:new.tool_state='valid') then
              update kp_firetool_type t set t.type_toolnnum = t.type_toolnnum + 1
                where t.type_id = :new.tool_type;
           end if;     
         elsif updating then
            if(:new.tool_type = :old.tool_type and :new.tool_state != :old.tool_state) then
                --如果类型没有修改,状态修改了
                if (:old.tool_state!='valid' and :new.tool_state='valid') then
                  --无效改为有效 
                  update kp_firetool_type t set t.type_toolnnum = t.type_toolnnum + 1 where t.type_id = :new.tool_type;
                else
                  --有效改无效
                  update kp_firetool_type t set t.type_toolnnum = t.type_toolnnum - 1 where t.type_id = :new.tool_type;
                end if;  
            elsif(:new.tool_type != :old.tool_type and :new.tool_state = :old.tool_state) then
                -- 如果修改了类型,状态没有修改
                 if (:new.tool_state='valid') then
                    update kp_firetool_type t set t.type_toolnnum = t.type_toolnnum + 1 where t.type_id = :new.tool_type;
                 end if; 
            elsif(:new.tool_type != :old.tool_type and :new.tool_state != :old.tool_state) then
                --如果修改了类型,也修改状态
                if(:old.tool_state='valid' and :new.tool_state != 'valid') then
                 --有效改为无效
                    update kp_firetool_type t set t.type_toolnnum = t.type_toolnnum - 1 where t.type_id = :old.tool_type;
                else
                    --无效改有效    
                    update kp_firetool_type t set t.type_toolnnum = t.type_toolnnum + 1 where t.type_id = :new.tool_type;    
                end if;        
            end if;    
         elsif deleting then
            if(:old.tool_state='valid') then
               --如果删除的记录是有效
            update kp_firetool_type t set t.type_toolnnum = t.type_toolnnum - 1 where t.type_id = :old.tool_type;
            end if;   
         end if;
end;

© 著作权归作者所有

上一篇: 调用QQ弹出窗
下一篇: DBMS_JOB
Wickywe
粉丝 1
博文 9
码字总数 4580
作品 0
广州
私信 提问
oracle pl/sql之触发器(trigger)

一.oracle触发器介绍 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时...

ZIJIAN1012
2014/04/21
0
0
zabbix自动发现oracle表空间并监控其使用率

监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制。Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)...

HMLinux
2018/06/26
0
0
Oracle 11g 的新特性 —— 组合触发器 (Compound Triggers)

之前我们介绍了 Oracle 11g 新特性中的 虚拟列 和 只读表,今天我们介绍另外一个新特性 —— 组合触发器。 在以前版本的 Oracle 中,你可通过 FOLLOWS 关键字来控制触发器执行的顺序,例如:...

tsl0922
2012/11/27
513
0
Oracle 11g 的新特性 —— 组合触发器 (Compound Triggers)

之前我们介绍了 Oracle 11g 新特性中的 虚拟列 和 只读表,今天我们介绍另外一个新特性 —— 组合触发器。 在以前版本的 Oracle 中,你可通过 FOLLOWS 关键字来控制触发器执行的顺序,例如:...

红薯
2012/07/26
3.4K
3
Oracle 数据库勒索病毒 RushQL 处理办法

Oracle 数据库勒索病毒 RushQL 处理办法 办法来自Oracle 官方: https://blogs.oracle.com/cnsupport_news/%E5%AF%B9%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E2%80%9C%E6%AF%94%E7%89%B9%E5%......

rootliu
2018/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

从濒临解散到浴火重生,OceanBase 这十年经历了什么?

阿里妹导读:谈及国产自研数据库,就不得不提 OceanBase。与很多人想象不同的是,OceanBase 并非衔着金钥匙出生的宠儿。相反,它曾无人看好、困难重重,整个团队甚至数度濒临解散。 从危在旦...

阿里云云栖社区
20分钟前
1
0
比特币第三方API大全

在开发比特币应用时,除了使用自己搭建的节点,也可以利用第三方提供的比特币api,来获取市场行情、进行交易支付、查询账户余额等。这些第三方api不一定遵循标准的比特币rpc接口规范,但往往...

汇智网教程
31分钟前
1
0
Dozer:Dozer异常java.lang.ClassCastException

这个问题是个很难发现的问题,因为代码本身没有错误,但就是无法找到报错原因 现记录下这个报错 java.lang.ClassCastException:com.XXX.ObjectA cannot be cast to com.XXX.ObjectA 代码中并...

琴兽
今天
2
0
Feign Retryer的默认重试策略测试

1、Feign配置 @Configurationpublic class FeignConfig { @Value("${coupon_service.url:http://localhost:8081}") private String couponServiceUrl; @Bean publ......

moon888
今天
2
0
关于不同域名下的session共享问题

如果登录,首页,分类,列表,产品都在不同的二级域名下,主域名不变,一定要保证里面的版本问题,不能为了更新而更新,这样哪个下面的session都访问不了。

dragon_tech
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部