2017-07-21 4 views
-1

私はRowkey(フォーマット:YYYY-1XXXX)として独自の「番号」を使用する空白のテーブルストレージを持っています。私は新しいアイテムを挿入するとReact js ajax私のwebApiにリクエストを投稿する)1XXXXの部分を1つ増やすには? 2017-10000 - >次のIDは2017-10001である必要があります。azure table storageカスタムrowKey自動インクリメント

答えて

0

ご使用のシナリオに応じて、Blob Storageを最新の自動インクリメント値を格納するセントラルストアとして使用することをお勧めします。テーブルストレージに新しい項目を追加するときに値を読み/更新する必要があります。 Azure Blob Storageのリソースを更新する際にオプティミスティックな並行性を使用するのは簡単です。ブロブを更新するための特定の前提条件とエンティティタグ(ETag)、BLOBの変更、ETagの変更、ETagの一致がない場合はHTTPステータスコード412(Precondition failed)が発生した場合、新しい値を再試行して再生成することができます。

詳細については、blogを参照してください。また、hereについては、BlobOptimisticSyncStore.csおよびUniqueIdGenerator.csについてはソースコードを参照してください。また、Auto-increment on Azure Table Storageに関する似たような問題があります。あなたはそれを参照することができます。

0

いいえ、Azureテーブルストレージには、列の値を自動的にインクリメントする方法がありません。

これを達成するには、新しいエンティティにRowKeyを手動で設定する必要があります。これは、保存する前の元のエンティティのRowKeyを知る必要があることを意味します。

0

これには棚からのサポートはありませんが、同じパーティションキーを持つエンティティに対して必要なことを行うパターンがあります。

まず、増分したい行キーをmax intから減算し、その値を代わりに行キーとして使用します。同じパーティションキー内で、このパターンは、バックエンドの空白テーブルが辞書順にエンティティを格納するため、表の上に最新の挿入されたエンティティを保持する、アジュール表サービスを引き起こします。

次へ新しいエンティティを挿入する場合は、パーティションキーとTake(1)のみを含むクエリを作成すると、そのクエリはそのパーティションのテーブルスキャンを行わずに最新の挿入されたエンティティを返します。反転されます)。

次に、最後に挿入されたエンティティの行キーに基づいて次の行キーを計算し、新しいエンティティをテーブルストレージに挿入します。

この段階では、すべてがうまくいき、新しいエンティティをそのパーティションキーのテーブルの上部に挿入したか、または同じエンティティを同じ行に挿入した他の人が読み込んで挿入するまでの間にすでにこの段階では、httpステータスコード409が表示され、リトライループの手順が繰り返されます。

関連する問題