。。有这样一个需求:
两个表,表A 是信息表,表B 是历史表,表B中除了表A中的字段,还多一个"类型"字段;
我要将表A中的数据,更新到表B中,同时表B中的"类型"字段中自动填充由A.a字段对应的一个类型;
不知道表述清楚了没有,路过的大神帮我看看 能不能用触发器 来实现~
(百度发现 触发器的种类很多,语法也多,而且基本上好像都是校验能否insert/update/delete的数据格式的,不知道能不能实现我想要的功能,求大神解惑,灰常感谢。。)
两个表,表A 是信息表,表B 是历史表,表B中除了表A中的字段,还多一个"类型"字段;
我要将表A中的数据,更新到表B中,同时表B中的"类型"字段中自动填充由A.a字段对应的一个类型;
不知道表述清楚了没有,路过的大神帮我看看 能不能用触发器 来实现~
(百度发现 触发器的种类很多,语法也多,而且基本上好像都是校验能否insert/update/delete的数据格式的,不知道能不能实现我想要的功能,求大神解惑,灰常感谢。。)
解决方案 »
- 两个表有条件性的 right 连接
- ora 12528:TNS:监听程序:所有适用例程都无法建立新连接
- 我在建Oracle表的时候,建了分区.为什么只能够建一个?请帮忙看看
- 开发环境是oracle8,vb6.0,连接方式是oo4o oracle object for OLE 出现的问题是oip-04099
- oracle jobs 自動執行存儲過程的問題!謝謝!
- 数据库报错,不知道具体是什么原因
- 请问这样写能否跳出for循环,谢谢
- 同样的table,为什么我的那么慢
- 如何更改数据库链接访问用户?
- 一个简单问题,在线等……
- mysql储存过程怎么装换成oracle的储存过程。。。。
- ora-00984: 列在此处不允许,如何解决,求大神
A 中一个字段,要填充到表 B 的两个字段 ?
数据源 表
--------------------------------------------------------
-- DDL for Table DX_SEND_HISTORY
-------------------------------------------------------- CREATE TABLE "ZFXX"."DX_SEND_HISTORY"
( "ID" VARCHAR2(30 BYTE),
"SMSID" VARCHAR2(30 BYTE),
"MOBILE" VARCHAR2(12 BYTE),
"SERVICENUM" VARCHAR2(8 BYTE),
"SMS" VARCHAR2(400 BYTE),
"REPORT" VARCHAR2(1 BYTE),
"PRIORITY" VARCHAR2(1 BYTE),
"BUSIID" VARCHAR2(50 BYTE),
"SYSTEMID" VARCHAR2(3 BYTE),
"TYPE" VARCHAR2(2 BYTE),
"CHANNELID" VARCHAR2(10 BYTE),
"OPERATORS" VARCHAR2(10 BYTE),
"SUBSYSID" VARCHAR2(5 BYTE),
"SENDCOUNT" NUMBER(*,0),
"PROCNAME" VARCHAR2(30 BYTE),
"WRITETIME" DATE,
"DELAYEDTIME" DATE,
"SENDTIME" DATE,
"SUCCESSFLAG" VARCHAR2(8 BYTE),
"MSGID" VARCHAR2(30 BYTE),
"RECVTIME" DATE,
"REPORTSTAT" VARCHAR2(2 BYTE),
"REPORTINFO" VARCHAR2(200 BYTE),
"STEPNOW" VARCHAR2(1 BYTE),
"MONTHDAY" VARCHAR2(2 BYTE),
"OPTUSERNAME" VARCHAR2(20 BYTE),
"SHOWFLAG" VARCHAR2(10 BYTE)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
REM INSERTING into ZFXX.DX_SEND_HISTORY
SET DEFINE OFF;
Insert into ZFXX.DX_SEND_HISTORY (ID,SMSID,MOBILE,SERVICENUM,SMS,REPORT,PRIORITY,BUSIID,SYSTEMID,TYPE,CHANNELID,OPERATORS,SUBSYSID,SENDCOUNT,PROCNAME,WRITETIME,DELAYEDTIME,SENDTIME,SUCCESSFLAG,MSGID,RECVTIME,REPORTSTAT,REPORTINFO,STEPNOW,MONTHDAY,OPTUSERNAME,SHOWFLAG) values ('20161201141451000000195','1234','18844067333',null,'1111',null,'1','D00001','123',null,null,'1',null,null,null,null,null,null,null,null,null,'2',null,null,null,null,null);
Insert into ZFXX.DX_SEND_HISTORY (ID,SMSID,MOBILE,SERVICENUM,SMS,REPORT,PRIORITY,BUSIID,SYSTEMID,TYPE,CHANNELID,OPERATORS,SUBSYSID,SENDCOUNT,PROCNAME,WRITETIME,DELAYEDTIME,SENDTIME,SUCCESSFLAG,MSGID,RECVTIME,REPORTSTAT,REPORTINFO,STEPNOW,MONTHDAY,OPTUSERNAME,SHOWFLAG) values ('20161201141451000000196','2345','18844067333',null,'2222',null,'2','D00002','123',null,null,'1',null,null,null,null,null,null,null,null,null,'3',null,null,null,null,null);
Insert into ZFXX.DX_SEND_HISTORY (ID,SMSID,MOBILE,SERVICENUM,SMS,REPORT,PRIORITY,BUSIID,SYSTEMID,TYPE,CHANNELID,OPERATORS,SUBSYSID,SENDCOUNT,PROCNAME,WRITETIME,DELAYEDTIME,SENDTIME,SUCCESSFLAG,MSGID,RECVTIME,REPORTSTAT,REPORTINFO,STEPNOW,MONTHDAY,OPTUSERNAME,SHOWFLAG) values ('20161201141451000000197','3456','18844067333',null,'3333',null,'3','D00003','123',null,null,'1',null,null,null,null,null,null,null,null,null,'3',null,null,null,null,null);
--------------------------------------------------------
-- DDL for Table TJ_SEND_HISTORY
-------------------------------------------------------- CREATE TABLE "ZFXX"."TJ_SEND_HISTORY"
( "MX_ID" VARCHAR2(20 BYTE),
"REQUEST_ID" VARCHAR2(30 BYTE),
"DX_ID" VARCHAR2(30 BYTE),
"SMSID" VARCHAR2(30 BYTE),
"MOBILE" VARCHAR2(12 BYTE),
"SERVICENUM" VARCHAR2(8 BYTE),
"SMS" VARCHAR2(400 BYTE),
"REPORT" VARCHAR2(1 BYTE),
"PRIORITY" VARCHAR2(1 BYTE),
"BUSIID" VARCHAR2(50 BYTE),
"SYSTEMID" VARCHAR2(3 BYTE),
"TYPE" VARCHAR2(2 BYTE),
"CHANNELID" VARCHAR2(10 BYTE),
"OPERATORS" VARCHAR2(10 BYTE),
"SUBSYSID" VARCHAR2(5 BYTE),
"SENDCOUNT" NUMBER(*,0),
"PROCNAME" VARCHAR2(30 BYTE),
"WRITETIME" DATE,
"DELAYEDTIME" DATE,
"SENDTIME" DATE,
"SUCCESSFLAG" VARCHAR2(8 BYTE),
"MSGID" VARCHAR2(30 BYTE),
"RECVTIME" DATE,
"REPORTSTAT" VARCHAR2(2 BYTE),
"REPORTINFO" VARCHAR2(200 BYTE),
"STEPNOW" VARCHAR2(1 BYTE),
"MONTHDAY" VARCHAR2(2 BYTE),
"OPTUSERNAME" VARCHAR2(20 BYTE),
"SHOWFLAG" VARCHAR2(10 BYTE),
"YWLX" VARCHAR2(30 BYTE)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
比如a表中有怎样的序号,对应什么样的分组类别。
这个对应分组存在哪里,a表中,还是第三个表。
如果在A表中,直接引用即可。
如果在第三个表中,需要关联查询得到
A 中一个字段,要填充到表 B 的两个对应字段 ?
============我只想说我是想 上传第三张表的 但是 论坛不让连续回复四次 =====
最多连续回复三次 很尴尬~ 最后一张表就放这里了。。
弄的有点乱 大神们随性看~
=========== 中间表 busiid 和 ywlx 的对应关系表
--------------------------------------------------------
-- DDL for Table YWLX_MAP
-------------------------------------------------------- CREATE TABLE "ZFXX"."YWLX_MAP"
( "REQUEST_ID" VARCHAR2(30 BYTE),
"BUSIID" VARCHAR2(50 BYTE),
"YWLX" VARCHAR2(30 BYTE),
"YWMS" VARCHAR2(30 BYTE)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
REM INSERTING into ZFXX.YWLX_MAP
SET DEFINE OFF;
Insert into ZFXX.YWLX_MAP (REQUEST_ID,BUSIID,YWLX,YWMS) values ('1','D00001','0','小');
Insert into ZFXX.YWLX_MAP (REQUEST_ID,BUSIID,YWLX,YWMS) values ('2','D00002','2','中');
Insert into ZFXX.YWLX_MAP (REQUEST_ID,BUSIID,YWLX,YWMS) values ('3','D00003','1','大');