2017-05-25 70 views
0

我有一個表,TBL_1,具有以下字段:甲骨文插入到表具有複合鍵

TBL_ID NUMBER (pk), 
CREATE_DATE DATE (pk), 
TBL_IND VARCHAR2(1) 

主鍵是TBL_IDCREATE_DATE,我試圖執行插入語句,但得到一個錯誤ORA-00001: unique constraint (primary key) violated

有一個插入前觸發器將NEW.CREATE_DATE設置爲SYSDATE。插入語句看起來象:

INSERT INTO TBL_1 (tbl_id,tbl_ind) 
    SELECT tbl_id,'Y' 
    FROM tbl_info; 

的實際查詢是一個稍微複雜一些,但我只是想指出這是一個INSERT INTO SELECT聲明。是否有可能是否有重複的觸發器對兩行使用相同的確切日期,從而導致重複錯誤?我怎樣才能避免這種情況?

回答

1

我認爲將create_date作爲主鍵的一部分並不是一個好主意。我建議你改用序列值。

如果你不介意減少的行數,你可以這樣做:

INSERT INTO TBL_1 (tbl_id,tbl_ind) 
    SELECT DISTINCT tbl_id, 'Y' 
    FROM tbl_info; 

或者,如果你仍然想所有行插入,然後重組數據使用順序,而不是創建日期。