2017-03-09 31 views
1

我有一個基於記錄的當前時間戳的MM/YYYY格式的分區鍵設置。我也有一個預觸發更新時保存記錄這個值:DocumentDB更新分區鍵在觸發器

function validate() { 
    var context = getContext(); 
    var request = context.getRequest(); 
    var document = request.getBody(); 

    var now = new Date(), 

    document.PartitionKey = ("0" + (now.getMonth() + 1)).slice(-2) + "/" + now.getFullYear(); 
    request.setBody(document); 
} 

不過,我收到以下錯誤:

One or more errors occurred.Message: {"Errors":["PartitionKey extracted from document doesn't match the one specified in the header"]} 

難道我們不能修改的觸發分區鍵?

回答

1

不,您不能在觸發器內更改分區鍵。

這是因爲存儲過程/觸發器是在單個分區鍵範圍內以事務方式執行的。由於DocumentDB是分佈式數據庫,因此需要使用分區鍵將請求路由到正確的服務器/分區。

執行此操作的最佳方法是從插入期間填充分區鍵的數據訪問層。在旁註中,使用時間戳不鼓勵作爲分區鍵,因爲它可能導致熱點(通常在當前時間戳/最近幾個小時內訪問數據)。