2014-03-27 36 views
2

我想名字,如果輸入的數據是,意思是沒有現有的密鑰或值從以前的不同,這將只對關係數據存儲執行更新的方法。動機是,不觸發由標準更新引發的數據更改事件。更新只修改新數據時調用了什麼?

什麼是這樣的更新正確的術語,並會爲例簽名是什麼呢?

+0

目前,我只是在* IfStateChanged *後綴後綴方法。我不確定是否有更好的術語來描述這一點,因爲IfStateChanged有點含糊。 – stevebot

+0

我不認爲這有一個標準的術語。就個人而言,我只是使用普通名稱,並且在Javadoc中聲明如果更新不會導致更改任何數據,則不會進行實際的數據庫更新。 –

+0

在SQL中,'update'只能更新已經存在的行,而'insert'只能插入新行(並且如果給定鍵的行已經存在則失敗),所以也許這就是你可以使用的慣例。 –

回答

2

因此,讓我們澄清你的聲明「只執行更新...如果輸入的數據是新的」。

如果只着眼於關係,只有在更新時變化,那麼你真的不「只能執行......如果......新」,作爲關鍵的值可能已經改變。

但是,如果您真的可能有兩次應用完全相同的值,並且第二次您什麼也不做,系統是idempotent冪等性 apis保證一個狀態後,他們被稱爲,這將不會改變重播情況。

非冪等呼叫的一個簡單的例子(由於API設計)

incrementCount(); 

而冪等呼叫的例子(與API允許它)

setCount(5); 

注意,不做任何事情不是冪等API的特性,而是優化其安全地用於冪等調用執行。基本上,對於一個冪等API,你可以執行以下操作:

if (currentCommand.equals(lastCommand)) { 
    return; 
}