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 2011-03-31 11:24:08