TL; DR我想要的功能是:「只更新Y,如果Y = 10」,否則失敗。如何使用Datomic數據庫執行原子操作?
例如:想象時間軸是T1,T2和T3。在時刻T1,實體X包含屬性Y = 10,在時間T2該屬性是Y = 14。我的目標是在Y中應用一個複雜的操作(假設這個操作是1的總和)。我在T1讀取Y值爲10,並將此值放入要處理的隊列中。在T3,當複雜的操作完成並且結果是11時,我將更新屬性Y.如果我簡單地更新屬性,那麼在T2的值Y = 14,它將被錯誤地丟棄。然而,在T3,更新後,我想確定最終值是Y = 10,否則我必須在T2處讀取Y = 14進行再處理。
我知道Database Functions用來進行原子讀取 - 修改 - 更新處理,但是如果操作很複雜並且需要分配(放入隊列後),這種方法就不好。
我想要的是相當於DynamoDB中的Conditional Writes的東西。
@RodyD,完美無瑕。 –