[英]Oracle inserting into table with composite key
我有一個表TBL_1
,其中包含以下字段:
TBL_ID NUMBER (pk),
CREATE_DATE DATE (pk),
TBL_IND VARCHAR2(1)
主鍵位於TBL_ID
和CREATE_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.