求一个plsql问题
CREATE OR REPLACE TRIGGER ALARM110_BJQKB
AFTER INSERT ON ALARM110
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
DECLARE
BJQKB_FSQY VARCHAR2(30);
BJQKB_XB VARCHAR2(3);
BEGIN
IF INSERTING THEN
BEGIN
SJJY_ALARM110(:new.ID,REID);
BJQKB_CCXB(:new.SEX,BJQKB_XB);
BJQKB_CCDZ(:new.CASEAREA,BJQKB_FSQY);
INSERT INTO TEMP_PS_BJQKB@db188todb2.us.oracle.com(JJBH,JJSJ,FSQKSJ,FSQY,FSDD,XB,LXDH,CZSJ)
VALUES(:new.ID,
TO_DATE(:new.CASETIME,'YYYY-MM-DD HH24:MI:SS'),
TO_DATE(:new.ALARMTIME,'YYYY-MM-DD HH24:MI:SS'),
NVL(BJQKB_FSQY,'750000'),
:new.CASEADDR,
BJQKB_XB,
:new.SELEPHONE,
SYSDATE);
EXCEPTION WHEN OTHERS THEN -- 抛出异常
/*-- 传值过程中出现错误将错误信息插入日志表 ----------------------------------------------------------------*/
INSERT INTO JK_SJCCRZB(SJBH,CZQK,RZRQ,SJBM)
VALUES(:new.ID,
'10', -- '10' 抛出异常数据没有插入临时表
SYSDATE,
'ALARM110');
END;
END IF;
END ALARM110_BJQKB;
以上是我写的触发器,当抛出异常时,将错误信息插入日志表,但此时 :new.ID 值为空了,问如何解决,在线等,急!!!
问题点数:20、回复次数:4Top
1 楼wupangzi(无本之木)回复于 2005-12-23 16:03:32 得分 0
思路自己最清楚!如果必须保存new.ID,那么为什么会没有呢?记日志,没必要搞主键!Top
2 楼baideer(白德尔)回复于 2005-12-23 16:07:27 得分 0
只有主键是唯一标识,这也是客户要求的。
我想问为什么会在抛出异常后取不到。
就是在 EXCEPTION 下面的INSERT语句Top
3 楼wupangzi(无本之木)回复于 2005-12-24 10:19:57 得分 20
应该不会!如果编译通过,那就不应该存在这样的情况!
或许你的异常就是因为没有:new.ID而产生的!
你可以用一个其他字段new列来代替看看就知道了!
等你调试结果!Top
4 楼Renkey(Renkey)回复于 2005-12-24 14:35:56 得分 0
:new.id可不可以改为ROWID.Top




