在天藍色表中存儲。有沒有辦法在更新或插入後獲取新的時間戳值。我正在編寫一個3階段提交協議來獲取表存儲以支持分佈式事務,並且它將多次寫入同一個實體。所以操作順序是這樣的,Read Entity
,Write Entity (Lock Item)
,Write Entity (Commit new values)
。我希望在鎖定項目操作之後獲得新的時間戳,這樣在執行提交新值操作之前,我不必再次不必要地讀取該項目。那麼是否有人知道如何在savechanges操作之後有效地獲取新的時間戳值?插入/更新後獲取時間戳
回答
我不認爲你需要做任何特別/額外的事情。當你讀你的實體時,你會得到一個Etag。當您保存該實體(設置someLock = true)時,只有在沒有其他人自您讀取之後更新實體時,保存纔會成功。因此,你知道你有鎖。然後你可以隨心所欲地做第二次寫作。
我不相信這是可能的。我會用你自己的時間戳和/或guid來標記條目。
如果您願意回到Update REST API call,它會返回生成響應的時間。它可能不會與記錄上的時間戳完全一樣,但我相信它會接近。
如果不是確切的,那麼由於樂觀併發會導致第二次更新失敗,是否也可以繞過樂觀併發?這也將起作用,因爲當我獲得鎖定時,我可以保證沒有其他進程會嘗試更新實體。 – RyanFishman 2011-12-26 20:22:30
好吧,爲了忽略表存儲的樂觀併發性,而不是像這樣更新一個值 – RyanFishman 2011-12-26 22:14:56
您可能需要破解Azure表。驅動程序
例如,在Azure python lib(TableStorage)中,Timestamp簡單地被跳過。
# 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. 插入插入重複鍵更新當前時間戳
- 2. 如何在更新後立即獲取時間戳值?
- 3. 休眠獲取最後更新時間戳
- 4. 如何獲取今天插入或更新的行,不帶時間戳列
- 5. KnexJS:如何使用當前時間戳插入/更新時間戳字段?
- 6. 如何將時間戳值更新/插入PHP/MySQL中的時間戳字段?
- 7. 插入觸發後的Firebird - 插入時間戳插入行
- 8. 時間戳更新
- 9. 更新時間戳
- 10. 更新時間戳
- 11. CouchDB:插入和更新時添加時間戳
- 12. 插入或更新,且更新僅在給定的時間戳更新
- 13. 從Cassandra獲取最後的時間戳
- 14. 將時間戳插入Hive
- 15. 將時間戳插入表
- 16. 插入時間戳在python
- 17. SimpleDB時間戳插入
- 18. 更新時間戳時Sqliteexception?
- 19. 從紅移表獲取最新更新時間戳
- 20. 獲取最新的時間戳mysql
- 21. 甲骨文時間戳更新/插入一年解釋
- 22. 如何使插入和更新蒙哥記錄時間戳差?
- 23. 插入,更新時間戳觸發兩列主鍵
- 24. PostgreSQL的:如何獲取上次插入時間戳
- 25. H2時間戳 - 始終插入(或獲取)當前日期
- 26. 創建觸發器以更新插入或更新記錄上的時間戳?
- 27. MySQL的 - 更新時間戳
- 28. Nhibernate更新時間戳
- 29. 更新時間戳列
- 30. 更新時間戳列
所有我想做的事情兩個寫一個接一個,第一次鎖定,然後下一次提交。我想在沒有任何閱讀的情況下做到這一點。額外的字段不會幫助我防止額外的讀取。有什麼建議麼? – RyanFishman 2011-12-26 20:00:41
對不起,我以爲你試圖通過做時間戳比較來防止他人寫同一個實體。你能詳細說明爲什麼你需要知道插入後的時間戳嗎? – Igorek 2011-12-27 00:52:55
我爲Azure表存儲實現了我自己的分佈式事務方法,因爲表存儲本身不支持它(我不知道爲什麼它不?)。我正在對同一實體執行2次寫入操作。第一次寫入是一個鎖,我基本上將一些屬性調用IsLocked設置爲true。如果成功成功,那麼所有其他角色將知道不要寫入該元素,因爲其他角色當前有鎖定。一旦我獲得鎖定並鎖定了分佈式事務中涉及的所有必需行,我就可以繼續對實體進行更改。 – RyanFishman 2011-12-27 01:00:11