表的触发器
新增或者删除表内容时通过触发器,更改数据库内另一个表的数据。并同时通所修改的表触发已收到电文的信息
1.新建表
使用SQL语句,通过表的内容结构新建表单
-- Create table create table TQJH04 ( QYH VARCHAR2(25) not null, ANATIME VARCHAR2(14), MT NUMBER(8,4), AD NUMBER(8,4), VDAF NUMBER(8,4), STD NUMBER(8,4), G NUMBER(8,4), X NUMBER(8,4), Y NUMBER(8,4), XD NUMBER(8,4), LRR VARCHAR2(20), WLID VARCHAR2(20), DCH VARCHAR2(2), QYDDBH VARCHAR2(20) ) tablespace TQ_ACT pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 16 next 8 minextents 1 maxextents unlimited ); -- Create/Recreate primary, unique and foreign key constraints alter table TQJH04 add primary key (QYH) using index tablespace TQ_ACT pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited );
2.发送端表的触发器
//左连接示例
select * from omtqi3 a LEFT JOIN omtqi2 b on trim(b.order_line_id) = trim(a.order_line_id) where substr(b.item_id,1,5)='A0201';
需要增加触发器的表
CREATE OR REPLACE TRIGGER jytq04_tri_insert AFTER INSERT --指定触发时机为插入操作后触发 ON JYTQ04 FOR EACH ROW --说明创建的是行级触发器 BEGIN IF INSERTING THEN --当新增一条数据时,会同时记录新增数据通过:new INSERT INTO TQJH04 (QYH,ANATIME,MT,AD,VDAF,STD,G,X,Y,XD,LRR,WLID,DCH,QYDDBH) VALUES ( to_char(:new.QYH), nvl(:new.lrsj,' '), to_number(nvl(:new.MT,0)), to_number(nvl(:new.AD,0)), to_number(nvl(:new.VDAF,0)), to_number(nvl(:new.STD,0)), to_number(nvl(:new.G,0)), to_number(nvl(:new.X,0)), to_number(nvl(:new.Y,0)), to_number(nvl(:new.XD,0)), to_char(nvl(:new.LRR,0)), to_char(nvl(:new.WLID,0)), to_number(nvl(:new.DCH,0)), to_char(nvl(:new.QYDDBH,0))); END IF; END;
3. 修改处理过程参数
修改处理过程(P_MSG_CONFIG)的参数
4. 接收端表的触发器
create or replace trigger tri_tqjh04_send after insert on tqjh04 for each row DECLARE v_buff clob:=''; V_SEND CLOB:=''; V_ERROR VARCHAR2(1):='1'; V_ERROR_MSG VARCHAR2(1000):=''; begin if inserting then v_buff:=rpad(nvl(:new.QYH,' '),25,' ')||rpad(nvl(:new.AnaTime,' '),14,' ')||lpad(nvl(:new.mt,0)*10000,8,0) ||lpad(nvl(:new.ad,0)*10000,8,0)||lpad(nvl(:new.VDAF,0)*10000,8,0)||lpad(nvl(:new.STD,0)*10000,8,0) ||lpad(nvl(:new.g,0)*10000,8,0)||lpad(nvl(:new.x,0)*10000,8,0)||lpad(nvl(:new.y,0)*10000,8,0) ||lpad(nvl(:new.xd,0)*10000,8,0)||rpad(nvl(:new.LRR,' '),20,' ')||rpad(nvl(:new.WLID,' '),20,' ') ||rpad(nvl(:new.DCH,' '),2,' ')||rpad(nvl(:new.QYDDBH,' '),20,' '); V_SEND:=''; V_SEND:=V_buff ; P_SENDMSG('TQJH04',V_SEND,V_ERROR,V_ERROR_MSG); IF V_ERROR<>'0' THEN RETURN; V_ERROR_MSG := '·¢Ë͵çÎÄʧ°Ü'; RETURN; END IF; end if; end;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签