- 浏览: 20645 次
- 性别:
- 来自: 北京
文章分类
最新评论
create or replace trigger gxh_value_change_trigger --创建或替换 触发器
after insert on gams_assetcard --触发时机在插入数据之后
for each row --每行都触发 (默认的数据访问关键字 NEW 新数据 OLD 旧数据 例如: NEW.CARDSTATE)
begin --开始(begin 和 end 之间访问需要加':' 例如: :NEW.CARDSTATE)
case when inserting then --条件判断开始 当正在执行插入时
case when (:NEW.CARDSTATE = '00' AND :NEW.YEWXLH = 1) then --第一个条件判断
insert into gxh_value_change (RECID, OBJECTID, YEWXLH, BILLTIME, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, :NEW.JIZRQ, :NEW.CARDSTATE, 0, :NEW.JIAZ, :NEW.JIAZ);
when (:NEW.CARDSTATE = '00' AND :NEW.YEWXLH > 1) then --其他条件判断
insert into gxh_value_change (RECID, OBJECTID, YEWXLH, BILLTIME, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, :NEW.JIZRQ, :NEW.CARDSTATE, (select c.jiaz from gams_assetcard c where c.objectid = :NEW.OBJECTID and c.yewxlh = :NEW.YEWXLH - 1), :NEW.JIAZ, :NEW.JIAZ);
end case; --条件判断结束
end case; --条件判断结束
end; --结束
--注意访问变量的方式 begin 和 end 之间 需要加冒号;begin 和 end 之外 则不需要加;
-- 多个条件判断 用 case when ()then 'sql语句'when () then 'sql语句' end case;
修改业务后的触发器
create or replace trigger gxh_value_change_trigger
after insert or update on gams_assetcard
for each row
declare
tem_value_old number:=0;
tem_orgunit_code varchar2(100);
tem_orgunit_name varchar2(200);
tem_assetclass_code varchar2(100);
tem_assetclass_name varchar2(200);
tem_assetclass_gb_code varchar2(100);
tem_assetclass_gb_name varchar2(200);
pragma autonomous_transaction;
begin
select g.stdcode,g.stdname into tem_assetclass_gb_code,tem_assetclass_gb_name from gams_jc_assetsort_gb g where g.recid = :NEW.SORTGBID;
select o.stdcode,o.stdname into tem_orgunit_code,tem_orgunit_name from md_org o where o.recid = :NEW.ORGUNIT ;
select a.stdcode,a.stdname into tem_assetclass_code,tem_assetclass_name from gams_jc_assetclass a where a.recid = :NEW.ZICFLID;
case
when updating then
case
when (:OLD.AUDITSTATE = 1 AND :NEW.AUDITSTATE = 2 and :OLD.CARDSTATE = '00' and :OLD.YEWXLH = 1 and :OLD.ISLASTEST = 1) then
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW,JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '00', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, 0, :NEW.JIAZ, :NEW.JIAZ,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
else
commit;
end case;
when inserting then
case
when (:NEW.AUDITSTATE = 2 and :NEW.CARDSTATE = '00' and :NEW.YEWXLH > 1) then
select c.jiaz into tem_value_old from gams_assetcard c where c.objectid = :NEW.OBJECTID and c.yewxlh = :NEW.YEWXLH - 1 ;
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '10', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, tem_value_old, :NEW.JIAZ, :NEW.JIAZ - tem_value_old,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
when (:NEW.AUDITSTATE = 2 and :NEW.CARDSTATE = '10') then
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '20', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, :NEW.JIAZ, 0, 0 - :NEW.JIAZ,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
when (:NEW.AUDITSTATE = 2 and :NEW.CARDSTATE = '13') then
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '30', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, :NEW.JIAZ, 0, 0 - :NEW.JIAZ,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
else
commit;
end case;
else
commit ;
end case;
end gxh_value_change_trigger;
---结构
case
when 条件 then
case
when 条件 then
when 条件 then
else
end case;
when 条件 then
case
when 条件 then
when 条件 then
else
end case;
else
end case;
after insert on gams_assetcard --触发时机在插入数据之后
for each row --每行都触发 (默认的数据访问关键字 NEW 新数据 OLD 旧数据 例如: NEW.CARDSTATE)
begin --开始(begin 和 end 之间访问需要加':' 例如: :NEW.CARDSTATE)
case when inserting then --条件判断开始 当正在执行插入时
case when (:NEW.CARDSTATE = '00' AND :NEW.YEWXLH = 1) then --第一个条件判断
insert into gxh_value_change (RECID, OBJECTID, YEWXLH, BILLTIME, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, :NEW.JIZRQ, :NEW.CARDSTATE, 0, :NEW.JIAZ, :NEW.JIAZ);
when (:NEW.CARDSTATE = '00' AND :NEW.YEWXLH > 1) then --其他条件判断
insert into gxh_value_change (RECID, OBJECTID, YEWXLH, BILLTIME, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, :NEW.JIZRQ, :NEW.CARDSTATE, (select c.jiaz from gams_assetcard c where c.objectid = :NEW.OBJECTID and c.yewxlh = :NEW.YEWXLH - 1), :NEW.JIAZ, :NEW.JIAZ);
end case; --条件判断结束
end case; --条件判断结束
end; --结束
--注意访问变量的方式 begin 和 end 之间 需要加冒号;begin 和 end 之外 则不需要加;
-- 多个条件判断 用 case when ()then 'sql语句'when () then 'sql语句' end case;
修改业务后的触发器
create or replace trigger gxh_value_change_trigger
after insert or update on gams_assetcard
for each row
declare
tem_value_old number:=0;
tem_orgunit_code varchar2(100);
tem_orgunit_name varchar2(200);
tem_assetclass_code varchar2(100);
tem_assetclass_name varchar2(200);
tem_assetclass_gb_code varchar2(100);
tem_assetclass_gb_name varchar2(200);
pragma autonomous_transaction;
begin
select g.stdcode,g.stdname into tem_assetclass_gb_code,tem_assetclass_gb_name from gams_jc_assetsort_gb g where g.recid = :NEW.SORTGBID;
select o.stdcode,o.stdname into tem_orgunit_code,tem_orgunit_name from md_org o where o.recid = :NEW.ORGUNIT ;
select a.stdcode,a.stdname into tem_assetclass_code,tem_assetclass_name from gams_jc_assetclass a where a.recid = :NEW.ZICFLID;
case
when updating then
case
when (:OLD.AUDITSTATE = 1 AND :NEW.AUDITSTATE = 2 and :OLD.CARDSTATE = '00' and :OLD.YEWXLH = 1 and :OLD.ISLASTEST = 1) then
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW,JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '00', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, 0, :NEW.JIAZ, :NEW.JIAZ,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
else
commit;
end case;
when inserting then
case
when (:NEW.AUDITSTATE = 2 and :NEW.CARDSTATE = '00' and :NEW.YEWXLH > 1) then
select c.jiaz into tem_value_old from gams_assetcard c where c.objectid = :NEW.OBJECTID and c.yewxlh = :NEW.YEWXLH - 1 ;
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '10', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, tem_value_old, :NEW.JIAZ, :NEW.JIAZ - tem_value_old,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
when (:NEW.AUDITSTATE = 2 and :NEW.CARDSTATE = '10') then
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '20', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, :NEW.JIAZ, 0, 0 - :NEW.JIAZ,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
when (:NEW.AUDITSTATE = 2 and :NEW.CARDSTATE = '13') then
insert into zczjk.gxh_value_change (RECID, OBJECTID, YEWXLH, YEWLX, BILLTIME, BILLCODE, ORGUNIT, CARDSTATE, JIAZOLD, JIAZNEW, JIAZZJ,CARDRECID,ZICMC,DANWMC,DANWBM,ZICFLBM,ZICFLMC,ZICDLBM,ZICDLMC) values (dna.new_recid, :NEW.OBJECTID, :NEW.YEWXLH, '30', :NEW.JIZRQ, :NEW.BILLCODE, :NEW.ORGUNIT, :NEW.CARDSTATE, :NEW.JIAZ, 0, 0 - :NEW.JIAZ,:NEW.RECID,:NEW.ZICMC,tem_orgunit_code,tem_orgunit_name,tem_assetclass_code,tem_assetclass_name,tem_assetclass_gb_code,tem_assetclass_gb_name);
commit;
else
commit;
end case;
else
commit ;
end case;
end gxh_value_change_trigger;
---结构
case
when 条件 then
case
when 条件 then
when 条件 then
else
end case;
when 条件 then
case
when 条件 then
when 条件 then
else
end case;
else
end case;
发表评论
-
批量执行多条sql语句
2017-11-21 14:18 2679在程序中执行的原sql语句如下: update TB_VG s ... -
创建DBLink
2017-11-15 17:56 357-目标 本地库jh 访问 远程库 zczjk --确认orac ... -
oracle 跨库查询(可以是不同服务器)
2017-10-11 17:48 17031.配置本地数据库服务器的tnsnames.ora文件 ... -
oracle由于中文字符集导致数据丢失
2017-08-01 10:14 371cmd窗口下 sqlplus sys/sys@orcl as ... -
oracle 数据泵导入导出
2017-07-20 10:15 266oracle 数据泵导入数据 EXP和IMP是客户端工具程 ... -
oracle清除密码
2017-07-05 15:01 310update core_authuser a set a.pa ... -
oracle导入数据库
2017-07-05 14:57 305导入数据库 需要在cmd窗口 imp root/root@OR ... -
oracle创建用户和表空间
2017-07-05 14:43 374创建用户和表空间 declare usrName varcha ... -
oracle身份证明检索失败
2017-07-05 14:11 465安装过程中,在启动实例并创建全局数据库时,如出现“ORA-12 ...
相关推荐
触发器9.18触发器9.18触发器9.18触发器触发器9.18触发器9.18触发器9.18触发器
初步学习Quartus软件时,了解各种触发器的机理、用软件进行仿真,看波形图。 Dff芯片 集成d 触发器,单独触发器 7474芯片D触发器 74112 J、K触发器 Tff T触发器 二分频触发器:时钟每触发2个周期时,电路输出1个周期...
实验3 触发器及其应用 一、实验目的 1、掌握基本RS、JK、D和T触发器的逻辑功能 2、掌握集成触发器的逻辑功能及使用方法 3、熟悉触发器之间相互转换的方法 二、实验原理 触发器具有两个稳定状态,用以表示逻辑状态"1...
sakila数据库触发器的理解 基于sakila的触发器的设计 PDF中包括: 1. 观察 sakila.mwb 并回答问题 1.1图中共有几个 View 1.2分析以下 3 个视图,回答以下问题: 2.观察 sakila-schema.sql 和 sakila-data.sql 并回答...
初步学习Quartus软件时,了解各种触发器的机理、用软件进行仿真,看波形图。 Dff芯片 集成d 触发器,单独触发器 7474芯片D触发器 74112 J、K触发器 Tff T触发器 二分频触发器:时钟每触发2个周期时,电路输出1个周期...
SQL SERVER为每个触发器都创建了两个临时表INSERTED表和DELETED表,这两个表的逻辑结构与被触发器作用的表一样,用户可以读取这两个表的内容,但不能对它们进行修改,触发器执行完后,这两个表也会自动删除。...
GBase 8s 触发器介绍 GBase 8s 触发器是一种存储过程,可以在进行 DML/DQL 操作时自动执行相应的语句。触发器可以用于维护多表之间的数据一致性。 触发器的优点 触发器的主要优点在于其自动响应的特性,对表的增/...
1、熟悉基本RS触发器和可控RS触发器功能; 2、熟悉集成的D触发器、JK触发器的功能; 3、初步应用D触发器和JK触发器实现简单功能电路。 二、实验内容及步骤 (一)构建一个由与非门构成的基本RS触发器,如图1所示。用...
触发器程序设计 2 通过本实验的学习,使学生掌握握触发器程序的设计和使用。 二、实验内容 说明:使用银行贷款数据库。 1、新建一个贷款记录统计表LoanNum,存放每一个法人单位的贷款次数。为LoanT表创建一...
"D 触发器原理-D 触发器电路图" D 触发器是一种边沿触发器,具有接收并记忆信号的功能,又称为锁存器。它属于脉冲触发方式,不存在约束条件和一次变化现象。边沿 D 触发器的工作原理是,在 CP 高电平期间输入信号,...
从Oracle8i开始,Oracle引入了特殊的触发器,这些触发器并不是和特殊的DML事件相关联的(DML事件,如,INSERT,UPDATE和DELETE)。这些系统级别的触发器包括数据库启动触发器,DDL触发器和最终用户登陆/注销触发器。...
1、测试D触发器的逻辑功能。2、触发器之间的相互转换。3、用JK触发器组成双向时钟脉冲电路,并测试其波形。
D触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电课设报告 23.pdfD触发器构成的余3码计数器数电...
触发器举例 1)掌握——触发器的应用; 课程目标 PART ONE 触发器举例 【例】 创建一个触发器,当修改Sell表中订购册数时,如果修改后的订购册数小于5本,则触发器将该对应的折扣修改为1,否则,折扣修改为0.8。 ...
本文实例讲述了mysql触发器之创建多个触发器操作。分享给大家供大家参考,具体如下: 这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。 在mysql 5.7.2+版本之前,我们...
Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到...
边沿触发器:只有在时钟脉冲CP上升沿或下降沿时刻接收输入信号,电路状态才发生翻转,而在CP的其它时间内,电路状态不会发生变化的触发器。 由于只在时钟上升沿或下降沿接收输入信号,因此提高了触发器的可靠性和抗...
触发器的一些例子,可以快速的使用触发器进行数据库编程
VHDL Quartus 同步D触发器源代码 --2015/11/25 --同步D触发器 LIBRARY IEEE; --调用库 USE IEEE.STD_LOGIC_1164.ALL; --库文件 USE IEEE.STD_LOGIC_UNSIGNED.ALL; --库文件 ---------------------------------------...