空白のテーブルストレージにあります。更新または挿入後に新しいタイムスタンプ値を取得する方法はありますか?私は、分散トランザクションをサポートするためにテーブルストレージを取得するための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. 挿入/更新/削除後のsqlalchemyフラスコ
- 6. 挿入後のGridViewの更新
- 7. タイムスタンプで日付を取得して挿入する
- 8. テーブルにタイムスタンプを挿入
- 9. 挿入リクエスト後のid値の取得
- 10. Asp.net detailsview - 更新後にデータを取得
- 11. テキストボックスを挿入してから更新した後に保存
- 12. JPA:挿入後に更新されたエンティティオブジェクトを取得するにはどうすればよいですか?
- 13. Entity Framework 4 - 更新/挿入用に生成されたSQLを取得する
- 14. 挿入後にPyMongoでオブジェクトIDを取得するには?
- 15. Zendに最後に挿入されたIDを取得する
- 16. PowerBuilder:SQL Serverテーブルに挿入した後にID値を取得
- 17. MVC 3、挿入した後、更新の前に、など
- 18. コアデータの関係が挿入後に更新されない
- 19. 挿入後にUUID()の値を取得しますか?
- 20. 最後に挿入されたIDを取得
- 21. 最後に挿入された行からデータを取得
- 22. LINQ2SQLの挿入後に主キーを取得する
- 23. Entity Framework 4.0挿入/更新
- 24. クエリの挿入/更新
- 25. scala - XMLの挿入/更新
- 26. VFP挿入、インデックス更新
- 27. トリガー挿入と更新
- 28. リアルタイム更新後のデータの取得
- 29. mysqlの遅れ挿入タイムスタンプ
- 30. MySQLが挿入後のカウントを更新するためのトリガー
私は2つの書き込みを次々にやり遂げようとしています。最初はロックし、次回はコミットします。私は途中で読んでいなくてもこれをしたいと思っています。余分なフィールドは余分な読み取りを防ぐのに役立つものではありません。助言がありますか? – RyanFishman
残念ながら、タイムスタンプ比較を行って他の人が同じエンティティに書き込むのを防ぐことを試みていると思っていました。なぜあなたはそれが挿入された後にタイムスタンプを知る必要があるのですか? – Igorek
Azure Table Storageの独自の分散トランザクションメソッドを実装しています。なぜなら、テーブルストレージはそれをネイティブにサポートしていないからです(なぜそうではないのでしょうか?)。私は同じエンティティに2回の書き込みを実行しています。最初の書き込みはロックですが、基本的にはIsLockedというプロパティ呼び出しをtrueに設定します。それが正常に成功した場合、他のすべてのロールは、現在他のロールがロックされているため、そのエレメントに書き込まないことを認識します。ロックを取得して、分散トランザクションに必要なすべての行をロックしたら、エンティティへの変更を進めることができます。 – RyanFishman