如果我有一列稱爲名稱,但「克拉克」的價值,我運行一個更新語句Oracle在數據值相同時更新列嗎?
update table1 set name = 'CLARK';
Oracle是否實際更新列或它忽略update命令,因爲值是相同的?
我發現這個問題(Oracle, how update statement works),第一個答案意味着即使值相等也會發生更新。我也在SQL Developer中嘗試過它,但它運行但我不知道是否真的發生了更新。
在此先感謝。
如果我有一列稱爲名稱,但「克拉克」的價值,我運行一個更新語句Oracle在數據值相同時更新列嗎?
update table1 set name = 'CLARK';
Oracle是否實際更新列或它忽略update命令,因爲值是相同的?
我發現這個問題(Oracle, how update statement works),第一個答案意味着即使值相等也會發生更新。我也在SQL Developer中嘗試過它,但它運行但我不知道是否真的發生了更新。
在此先感謝。
是的,即使Oracle相同,Oracle也會更新列。
在一個非常簡單的例子中,這沒有區別。但是,考慮以下因素: -
此更新的這些方面顯示該列實際上已更新。
當然,當值相同時,可能會進行一些優化,但這些作爲Oracle的用戶不可見。
是的,即使實際值沒有改變,所有行都會更新並觸發所有觸發器。
因此,如果更新確實發生,那麼這是否意味着如果正在跟蹤審計(我的理解是Oracle可以跟蹤列級別的更改),那麼即使值沒有更改,它也會被視爲更新並被跟蹤審計?此外,這意味着如果「更新」確實不「更新」,因爲值是相同的,那麼這應該在代碼中說明,對吧?就像檢查是否相等,如果值相等,不更新? – BigFish
@BigFish我不確定Oracle審計是做什麼的。 –