1
병합 명령문을 통해 Oracle에서 Upsert를 수행하려고합니다. 는 지금은 합성 주를 가지고에 병합 노력하고있어 테이블은 그래서 지금처럼 내 쿼리를 creat4ed :Oracle Merge 문에 여러 열 오류가 발생했습니다.
MERGE INTO CONTINGENT_COMMISSION CC USING
(SELECT
'ad_adavila' CC_PROD_USERID,
to_number('42.22', '999,999,999.99') CC_COMM_PERCENT,
to_number('217,904.08', '999,999,999.99') CC_PREMIUM,
'2' CC_TRIMESTER,
'2013' CC_YEAR
FROM DUAL) SRC
ON (CC.CC_PROD_USERID || CC.CC_TRIMESTER || CC.CC_YEAR = SRC.CC_PROD_USERID || SRC.CC_TRIMESTER || SRC.CC_YEAR)
WHEN MATCHED THEN
UPDATE
SET CC.CC_COMM_PERCENT = to_number('42.22', '999,999,999.99'),
CC.CC_PREMIUM = to_number('217,904.08', '999,999,999.99'),
CC.CC_TRIMESTER = '2',
CC.CC_YEAR = '2013'
WHEN NOT MATCHED THEN
INSERT
(CC_PROD_USERID,CC_COMM_PERCENT,CC_PREMIUM,CC_TRIMESTER,CC_YEAR)
VALUES
('ad_adavila',to_number('42.22', '999,999,999.99'),to_number('217,904.08', '999,999,999.99'),'2','2013');
을 나는이 쿼리를 실행하려고 할 때마다 이제 다음과 같은 오류를 받고 있어요.
ORA-38104 : ON 절에 참조 된 열은 업데이트 할 수 없습니다 : "CC" "CC_TRIMESTER"Aparently이 ON 절은 둘 이상의 열이 있기 때문에 발생합니다
;. 그것은 내 기본 구성 키로 인해 필연적입니다 :
CONSTRAINT "CONTINGENT_COMMISSION_PK" PRIMARY KEY ("CC_PROD_USERID", "CC_TRIMESTER", "CC_YEAR")
어쨌든이 작업을 수행 할 수 있습니까? ON 절에 참조 된 열은 업데이트 할 수 없습니다 :. 당신이 절에 필터가 사용 열을 업데이트 할 수 없습니다
"CC" "CC_TRIMESTER는"단지
그게 전부입니다. 고맙습니다! – sonar