【发布时间】:2014-06-14 01:22:40
【问题描述】:
我有一个触发器,其中我正在使用合并子句,触发器中没有错误,但是当在该表上完成插入后触发触发器时,插入语句会抛出 ora-38104columns 在 on 子句中引用的列不能在 emp_id 列上更新
这是合并语句
MERGE INTO stg_ta_payroll
USING
(select :NEW.ID_TM_ENR ID_TM_ENR, to_number(:NEW.ID_STR_RT) ID_STR_RT, :NEW.ID_EM ID_EM,
nvl(TO_NUMBER(TO_CHAR(:NEW.TS_EM_TM_IN,'YYMMDD')),0) V_TA_DATE,
V_SESSION_NO V_SESSION_NO,
:NEW.TS_EM_TM_IN TS_EM_TM_IN, :NEW.TS_EM_TM_OUT TS_EM_TM_OUT,
DECODE(:NEW.TY_TM,'0',nvl(to_char(:NEW.TS_EM_TM_IN,'HH24MI'),'0000'),' ') V_TIME_IN,
DECODE(:NEW.TY_TM,'0',nvl(to_char(:NEW.TS_EM_TM_OUT,'HH24MI'),'0000'),' ') V_TIME_OUT,
V_MGR_OVRD V_MGR_OVRD,
:NEW.ID_MGR ID_MGR,DECODE(:NEW.TY_TM,'XX','9',:NEW.TY_TM) TY_TM,
decode(:NEW.TY_TM,'0',:NEW.OTHER_HRS_STR ,(NVL((:OLD.OTHER_HRS_STR),0)+NVL((:NEW.OTHER_HRS_STR),0)))OTHER_HRS_STR,
-- V_OTHER_HRS_STR V_OTHER_HRS_STR,
V_AREA V_AREA, V_ASSC_NAME V_ASSC_NAME, V_MISC_WAGES_DESC V_MISC_WAGES_DESC, V_SHRT_STR_NAME V_SHRT_STR_NAME,
(:NEW.HRS_STR + :NEW.OTHER_HRS_STR) TOT_HRS from dual) STG
ON (TIME_ENT_ID=STG.ID_TM_ENR AND to_number(STR_ID)=to_number(STG.ID_STR_RT) AND EMP_ID=STG.ID_EM)
WHEN MATCHED THEN
UPDATE SET
STATUS = null,
EMP_ID = STG.ID_EM,
TA_DATE = STG.V_TA_DATE,
--SESSION_NO = STG.V_SESSION_NO,
TIME_IN = STG.V_TIME_IN,
TIME_OUT = STG.V_TIME_OUT,
MGR_OVERRIDE = STG.V_MGR_OVRD,
MGR_EMP_NO = STG.ID_MGR,
MISC_WAGES_CODE = STG.TY_TM,
MISC_WAGES_HRS = STG.OTHER_HRS_STR,
AREA = STG.V_AREA,
ASSOCIATE_NAME = STG.V_ASSC_NAME,
MISC_WAGES_DESC = STG.V_MISC_WAGES_DESC,
SHRT_STR_NAME = STG.V_SHRT_STR_NAME,
HRS = STG.TOT_HRS,
STG_OSB_PROCESS_DATE = null
【问题讨论】: