我已經爲了插入根據匹配條件多行寫了下面的腳本:插入行到Oracle數據庫中沒有得到重複鍵錯誤
Insert
Into RATE_HEADER_NEGOTIATED (RESORT, RATE_CODE, NAME_ID, BEGIN_DATE, END_DATE,
INSERT_USER, INSERT_DATE, UPDATE_USER, UPDATE_DATE, ORDER_BY)
(SELECT 'HRHLC','ST20B',NAME_ID,'01-JAN-2016','12-FEB-2016',
'327','12-FEB-2016','327','12-FEB-2016','1'
from rate_header_negotiated
where resort = 'HRHLC'
and RATE_CODE = 'ST20BL'
and RATE_CODE <> 'ST20B'
and END_DATE >= '01-JAN-16');
我的問題是它給我重複鍵錯誤,因爲有已經是包含'ST20B'的行 - 我需要修復我的腳本的那部分內容,以便它只在不包含該ST20B的行上插入行。如果在運行它之前手動刪除重複行,腳本將起作用。
那麼主鍵是什麼?請顯示錶格定義和所有唯一約束。 – OldProgrammer
不要依賴您的NLS設置和隱式日期轉換;使用'to_date('01 -JAN-2016','DD-MON-YYYY')'或日期文字如'DATE'2016-01-01''。您似乎也將數字作爲字符串傳遞。表格的主要/唯一鍵是什麼? –
主要唯一鍵是NAME_ID列,它是每個個人配置文件的標識符。所以基本上我想採取包含ST20BL的配置文件並複製該行,但插入ST20B。然而,其中一些NAME_ID確實已經擁有ST20B – DSmith