我希望在Oracle中執行建設性合併,即如果在源表中找到匹配記錄,則應將具有當前時間戳記的新記錄添加到目標表中。合併,匹配時插入
如何在Oracle中使用合併來實現此目的?下面是我的代碼,它提供了一個「缺少關鍵字」的錯誤。
merge into studLoad sl
using student s
on(s.studID=sl.studID)
when matched
then
insert(sl.studID,sl.studName)
values(s.studID||'abc',s.studName)
when not matched
then
insert(sl.studID,sl.studName)
values(s.studID,s.studName);
此外,我不知道如何添加當前時間戳與studName
一起。任何建議爲同樣將受到歡迎。
但我希望檢查整個源表並檢查哪些所有記錄被更新,並將更新記錄的新條目添加到目標表中......那麼,如何使用單個插入來執行此操作?我必須使用合併。 – z22 2012-08-12 18:39:53
@ z22 - 對不起,我不明白。有匹配的情況和沒有匹配的情況有什麼不同?在你發佈的問題中,你在兩種情況下都是在執行「INSERT」。 – 2012-08-12 18:46:28
這就是這樣的情況:如果記錄不存在 - 插入它,如果它存在,保持原樣,並插入一個新的記錄以及時間戳和新的代理鍵 - 希望我這次讓自己清楚。 – z22 2012-08-12 18:49:51