向各位高手问个问题:
有三张表:
CREATE TABLE SMS_1
(
BATCHSENDID VARCHAR2(32 BYTE) NOT NULL,
TEMPLATE CLOB,
SENDTYPE NUMBER(1) DEFAULT (0) NOT NULL,
ORGID VARCHAR2(32 BYTE) NOT NULL,
USERID VARCHAR2(32 BYTE) NOT NULL
)CREATE TABLE SMS_2
(
SUBSCRIBEID VARCHAR2(32 BYTE) NOT NULL,
BATCHSENDID VARCHAR2(32 BYTE) NOT NULL,
SUMMARY VARCHAR2(80 BYTE),
CONTENT CLOB NOT NULL,
SENDPOINT DATE,
)CREATE TABLE SMS_3
(
SUBSCRIBEID VARCHAR2(32 BYTE) NOT NULL,
MSGLOGDETAILID VARCHAR2(32 BYTE) NOT NULL,
MOBILEPHONE VARCHAR2(18 BYTE),
)CREATE TABLE SMSC_4
(
MSGID NUMBER(8) NOT NULL,
MOBILEPHONE VARCHAR2(13 BYTE),
MSGCONTENT VARCHAR2(1000 BYTE),
SENDTIME DATE NOT NULL,
USERID VARCHAR2(50 BYTE),
ORGID VARCHAR2(50 BYTE),
)SMS_3 是 SMS_2 的子表,SMS_2 又是 SMS_1 的子表,判断如果SMS_2表中的某条记录有子记录,且SENDPOINT为当前系统时间时,
就将SMS_2表中SENDPOINT字段值与它子表(SMS_3)里对应的MOBILEPHONE字段值,与它的主表(SMS_1)里对应的ORGID,USERID字段值插入
表SMSC_4里对应的SENDTIME,MOBILEPHONE,ORGID,USERID字段值里去;请高手指教,回复必给分;
有三张表:
CREATE TABLE SMS_1
(
BATCHSENDID VARCHAR2(32 BYTE) NOT NULL,
TEMPLATE CLOB,
SENDTYPE NUMBER(1) DEFAULT (0) NOT NULL,
ORGID VARCHAR2(32 BYTE) NOT NULL,
USERID VARCHAR2(32 BYTE) NOT NULL
)CREATE TABLE SMS_2
(
SUBSCRIBEID VARCHAR2(32 BYTE) NOT NULL,
BATCHSENDID VARCHAR2(32 BYTE) NOT NULL,
SUMMARY VARCHAR2(80 BYTE),
CONTENT CLOB NOT NULL,
SENDPOINT DATE,
)CREATE TABLE SMS_3
(
SUBSCRIBEID VARCHAR2(32 BYTE) NOT NULL,
MSGLOGDETAILID VARCHAR2(32 BYTE) NOT NULL,
MOBILEPHONE VARCHAR2(18 BYTE),
)CREATE TABLE SMSC_4
(
MSGID NUMBER(8) NOT NULL,
MOBILEPHONE VARCHAR2(13 BYTE),
MSGCONTENT VARCHAR2(1000 BYTE),
SENDTIME DATE NOT NULL,
USERID VARCHAR2(50 BYTE),
ORGID VARCHAR2(50 BYTE),
)SMS_3 是 SMS_2 的子表,SMS_2 又是 SMS_1 的子表,判断如果SMS_2表中的某条记录有子记录,且SENDPOINT为当前系统时间时,
就将SMS_2表中SENDPOINT字段值与它子表(SMS_3)里对应的MOBILEPHONE字段值,与它的主表(SMS_1)里对应的ORGID,USERID字段值插入
表SMSC_4里对应的SENDTIME,MOBILEPHONE,ORGID,USERID字段值里去;请高手指教,回复必给分;
before insert on SMS_3
for each row
referencing new as new old as old
declare
pragma autonomous_transaction;
begin
insert into SMSC_4
select S3.MSGLOGDETAILID,S3.MOBILEPHONE,S2.CONTENT,S2.SENDPOINT,S1.USERID,S1.ORGID
from SMS_1 S1,SMS_2 S2,SMS_3 S3
where 1=1
and S1.BATCHSENDID = S2.BATCHSENDID
and S2.SUBSCRIBEID = :New.SUBSCRIBEID
and turnc(:New.SENDPOINT) = turnc(sysdate);
commit;
exception
when dup_val_on_index then
dbms_output.put_line(sqlerror);
when others then
dbms_output.put_line(sqlerror);
end;
但是我要在SMS_3上插入记录时,判断它的父表(SMS_2)里的SENDPOINT是否为系统时间,
我的意思是SENDPOINT一般不为系统时间,它是未来的时间,所以我要一直等到系统时间为SENDPOINT的时间
时再触发事件,请问应怎么改..
如:SENDPOINT为2009-2-28,而今天是2009-2-26,所以我是要到了2009-2-28这一天再触发事件;