空白のテーブルストレージにあります。更新または挿入後に新しいタイムスタンプ値を取得する方法はありますか?私は、分散トランザクションをサポートするためにテーブルストレージを取得するための3フェーズコミットプロトコルを作成しており、同じエンティティへの複数の書き込みを行います。したがって、操作命令は次のようになります。Read Entity
、Write Entity (Lock Item)
、Write Entity (Commit new values)
。アイテムのロック操作後に新しいタイムスタンプを取得したいので、新しい値のコミット操作を行う前にアイテムを再度読み込む必要はありません。では、savechanges操作後に効率的に新しいタイムスタンプ値を取得する方法を知っていますか?挿入/更新後にタイムスタンプを取得
答えて
私は特別な/特別なことをする必要はないと思います。あなたがあなたのエンティティを読むと、そのためのEtagが得られます。そのエンティティを保存すると(someLock = trueに設定されます)、保存したものは、読み取り後に他の誰もエンティティを更新していない場合にのみ成功します。したがってあなたはあなたがロックを持っていることを知っています。そして、あなたはあなたが好きなように2度目の書き込みをすることができます。
私はそれが可能であるとは思わない。自分のタイムスタンプやGUIDを使ってエントリをマークします。
Update REST API callに戻ってもらえたら、応答が生成された時間が返されます。レコードのタイムスタンプとまったく同じではないかもしれませんが、近いと確信しています。
正確ではない場合、オプティミスティックな並行性のために2番目の更新が失敗することはありません。オプティミスティックな並行性も回避できますか?ロックを取得してからは、他のプロセスがエンティティを更新しようとしないことを保証できます。 – RyanFishman
[OK]を、このような値を更新するのではなく、テーブル記憶域の楽観的同時実行を無視するために – RyanFishman
あなたのAzureテーブルをハックする必要があるかもしれません。ドライバ
たとえば、Azure python lib(TableStorage)では、タイムスタンプは単純にスキップされます。
# exclude the Timestamp since it is auto added by azure when
# inserting entity. We don't want this to mix with real properties
if name in ['Timestamp']:
continue
- 1. ibatisのバッチ挿入/更新の更新カウントの取得
- 2. 挿入後と更新後のトリガー
- 3. MySQL:データベースへの最後の挿入のタイムスタンプを取得するには
- 4. 挿入/更新クエリから最後に挿入されたIDの戻り値を取得
- 5. 挿入後に挿入されたレコードのIDを取得
- 6. 挿入後のGridViewの更新
- 7. 挿入/更新/削除後のsqlalchemyフラスコ
- 8. SQLの挿入後の更新
- 9. タイムスタンプで日付を取得して挿入する
- 10. mybatisでSQLを挿入して更新した後に挿入オブジェクトまたは更新オブジェクトを取得する方法
- 11. タイムスタンプをハイブに挿入
- 12. テーブルにタイムスタンプを挿入
- 13. タイムスタンプをハイブテーブルに挿入
- 14. SQLサーバーにタイムスタンプを挿入
- 15. 挿入リクエスト後のid値の取得
- 16. Asp.net detailsview - 更新後にデータを取得
- 17. 重複更新に挿入
- 18. 重複更新に挿入
- 19. 自動タイムスタンプ - 挿入
- 20. 値を挿入した後にコンボボックスを更新する
- 21. JPA:挿入後に更新されたエンティティオブジェクトを取得するにはどうすればよいですか?
- 22. 更新後に行を挿入するOracleトリガー
- 23. テキストボックスを挿入してから更新した後に保存
- 24. 挿入後および更新後のSQL Serverトリガー
- 25. 更新後、挿入トリガがSQL Serverの更新時に機能しないVB.net
- 26. 削除、更新または挿入後にDataGridViewが更新されない
- 27. Entity Framework 4 - 更新/挿入用に生成されたSQLを取得する
- 28. テーブルに挿入または更新された番号を取得
- 29. Zendに最後に挿入されたIDを取得する
- 30. PowerBuilder:SQL Serverテーブルに挿入した後にID値を取得
私は2つの書き込みを次々にやり遂げようとしています。最初はロックし、次回はコミットします。私は途中で読んでいなくてもこれをしたいと思っています。余分なフィールドは余分な読み取りを防ぐのに役立つものではありません。助言がありますか? – RyanFishman
残念ながら、タイムスタンプ比較を行って他の人が同じエンティティに書き込むのを防ぐことを試みていると思っていました。なぜあなたはそれが挿入された後にタイムスタンプを知る必要があるのですか? – Igorek
Azure Table Storageの独自の分散トランザクションメソッドを実装しています。なぜなら、テーブルストレージはそれをネイティブにサポートしていないからです(なぜそうではないのでしょうか?)。私は同じエンティティに2回の書き込みを実行しています。最初の書き込みはロックですが、基本的にはIsLockedというプロパティ呼び出しをtrueに設定します。それが正常に成功した場合、他のすべてのロールは、現在他のロールがロックされているため、そのエレメントに書き込まないことを認識します。ロックを取得して、分散トランザクションに必要なすべての行をロックしたら、エンティティへの変更を進めることができます。 – RyanFishman