自在猫先生 2022-05-17 16:32 采纳率: 66%
浏览 35
已结题

Oracle 数据库触发器新增数据异常,无法正常的新增数据至数据库

问题遇到的现象和发生背景

触发器异常无法新增数据,写死的也无法新增和关联表取值的数据也是无法新增

运行结果及报错内容
CREATE OR REPLACE TRIGGER EB.T_EB_TR_SYS_DN_PENDING_HIS
  AFTER INSERT  ON EB.T_EB_SYS_DN_PENDING_H
  FOR EACH ROW
DECLARE
 V_URL VARCHAR2(200);
BEGIN

   

    SELECT T.LOOKUP_VALUE_NAME INTO V_URL FROM T_EB_DB_LOOKUP_VALUE T WHERE T.LOOKUP_TYPE_CODE='VMD_TO_PARA_URL' AND T.LOOKUP_VALUE_CODE='1';

    INSERT INTO T_IS_WF_HIS_INFO
      (PENDING_ID,
       CREATED_DATE,
       LAST_UPDATED_BY,
       LAST_UPDATED_TIME,
       HANDLE_TEXT,
       PROCESS_STATUS,
       PROCESS_RUNTIME_ID,
       SYSTEM_ID,
       PROCESS_PENDING_ID,
       CREATED_BY,
       PEND_AUTOR,
       TOPIC,
       PROCESS_MODULE_ID,
       PROCESS_KIND_GUID,
       PROCESS_KIND_NAME,
       OWNER,
       OWNER_NAME,
       LAST_AUTOR,
       INITIATE_DATETIME,
       PROCESS_NAME,
       CURRENT_STEP_ID,
       CURRENT_STEP_NAME,
       URL,
       MAIN_VER,
       SUB_VER,
       ACTIVE_DATE,
       MAXAPPROVALHOURS,
       ACTIVE_MONTH,
       MAXAPPROVALDATE,
       CREATED_TIME,
       PENDING_TYPE   
       )
       SELECT :NEW.PENDING_ID,
       SYSTIMESTAMP,
        :NEW.USER_ID,
        :NEW.LAST_UPDATED_DATE,
        :NEW.REMARK,
        1,
        :NEW.LINK_BU_ID,
        'VMD',
        :NEW.PENDING_ID,
        :NEW.CREATOR,
        :NEW.USER_ID,
        WN.WF_NODE_NAME TOPIC,
        DP.WF_ID,
        SW.WF_ID,
        SW.WF_NAME,
        DP.CREATOR,
        U2.EMP_NAME,
        DP.CREATOR,
        DP.CREATED_DATE,
        SW.WF_NAME,
        WN.WF_NODE_ID,
        WN.WF_NODE_NAME,
        V_URL,
        NULL,
        NULL,
        DP.CREATED_DATE,
        0,
        NULL,
        NULL,
        DP.CREATED_DATE,
        1
        FROM T_IS_WF_HIS_INFO WI 
        INNER JOIN EB.T_EB_SYS_DN_PENDING DP ON WI.PENDING_ID=DP.PENDING_ID
        INNER JOIN BOM.T_EAP_SYS_USER U2 ON DP.CREATOR=U2.USER_ID 
        INNER JOIN EB.T_EB_SYS_DN_WF_NODE WN ON DP.WF_NODE_CODE=WN.WF_NODE_CODE 
        INNER JOIN EB.T_EB_SYS_WF SW ON DP.WF_ID=SW.WF_ID;  
    
END;


我的解答思路和尝试过的方法

根据表查询看是否存在关联关系

我想要达到的结果

新增成功 不管是写死的还是关联的数据

  • 写回答

1条回答 默认 最新

  • 於黾 2022-05-17 16:43
    关注

    不要foreach row
    你这是每次insert一条,都去表里面循环取每条数据
    你直接取new.列名就行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    问题事件

    • 系统已结题 5月25日
    • 已采纳回答 5月17日
    • 创建了问题 5月17日

    悬赏问题

    • ¥15 利用加权最小二乘法求亚马逊各类商品的价格指标?怎么求?
    • ¥15 c++ word自动化,为什么可用接口是空的?
    • ¥15 Matlab计算100000*100000的矩阵运算问题:
    • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
    • ¥16 需要完整的这份订单所有的代码,可以加钱
    • ¥30 写一个带界面控制的机房电脑一键开机关机并且实时监控的软件
    • ¥15 Stata数据分析请教
    • ¥15 请教如何为VS2022搭建 Debug|win32的openCV环境?
    • ¥15 关于#c++#的问题:c++如何使用websocketpp实现websocket接口调用,求示例代码和相关资料
    • ¥15 51单片机的外部中断,按下按键后不能切换到另一个模式