MERGE INTO dpr d
USING (select 3333 dpr_qot_id, to_date('1-Jun-07', 'DD-MON-RR') dpr_ts
from dual) s
on (s.dpr_ts = d.dpr_ts and s.dpr_qot_id = d.dpr_qot_id)
when not matched then
insert
(DPR_TS,
DPR_OPEN,
DPR_HIGH,
DPR_LOW,
DPR_CLOSE,
DPR_VOLUME,
DPR_QOT_ID)
values
(to_date('1-Jun-07', 'DD-MON-RR'),
920,
941.5,
915,
933.5,
696218,
3333)
WHEN MATCHED THEN
UPDATE
set DPR_OPEN = 920,
DPR_HIGH = 941.5,
DPR_LOW = 915,
DPR_CLOSE = 933.5,
DPR_VOLUME = 696218;
비슷한 검색어 (다른 날짜, 가격)의 루프가 있습니다. 어쨌든 때로는 오류가 발생합니다 : 고유 제약 (QF.IDX_DPR_ID) 위반 (DBD 오류 : OCIStmtExecute). 고유 제한 조건은 트리거에 의해 생성 된 DPR_ID에 정의됩니다. 어떤 단서를 어떻게 해결할 수 있습니까? 루프는 perl로 작성됩니다. 나는 병합을 사용하는 동안 이런 종류의 오류가 나타나지 않을 것이라고 예상 할 수 있는데, 내가 뭘 잘못하고 있는지 모른다. pl/sql에서 실행할 수 있습니다. 루프에서 오류가 '만'발생합니다. 어떤 타이밍 문제입니까? 사전에병합 원인 고유 조건 위반
감사 인사 마그
답장을 보내 주셔서 감사합니다. DPR_ID – tbone