簡體   English   中英

Oracle使用組合鍵插入表

[英]Oracle inserting into table with composite key

我有一個表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語句。 如果存在重復的tbl_id ,觸發器是否對兩行使用了相同的確切日期,從而導致重復的錯誤,是否可能? 如何避免這種情況?

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

如果您不介意減少行數,則可以執行以下操作:

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

或者,如果仍然希望插入所有行,則可以重組數據以使用序列而不是創建日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM