我有一個長表是一個GroupCode長列。我可以有多組產品,因此爲了獲得一個組的所有產品,我只需要獲得與GroupCode相同的所有產品。是否有可能以樂觀併發確保這種情況?
我可以將產品從一個組更改爲另一個組,如果我從一個組更改產品,我希望組的所有產品更改爲新組。
如果我用樂觀併發,它會發生這樣的:
一個用戶想從一組改變產品,所以他得到所有的產品相同groupCode。將新的groupCode設置爲所有這些產品。
第二位用戶將新產品添加到組中。但是第一個用戶沒有這個產品,因爲他在第二個用戶添加新產品之前得到了所有的產品。
所以最後,一個新產品有一個錯誤的GroupCode,因爲代碼不正確,因爲該組的所有產品都改變爲新組。所以我會有一個只有一個產品的團隊,這是不正確的。
由於悲觀併發性,第一次使用得到該組的所有產品,阻止所有產品。
第二個用戶嘗試向該組添加新產品,爲此,首先嚐試將該組的其中一個產品作爲參考產品,但第一個用戶如何阻止該產品,第二個用戶有等待。
第一位用戶將所有產品更改爲新組並取消阻止所有產品。
第二個用戶獲得具有新groupCode的參考產品,因此新產品被添加到正確的組中。總之,我希望當我將產品從一個組更改爲另一個組時,我想要更改組的所有產品,並避免新產品屬於舊組。
是否有可能通過樂觀併發來解決這種情況?或者我必須使用悲觀併發?
看來你想對組執行操作,而不是對組的產品執行操作。 –
但我沒有組表,我有產品具有相同的代碼。所以我想更新Products.GroupCode列,所以我想在procuts中執行一個操作:更新產品GroupCode = 111其中GroupCode = 000; –
請顯示一些示例數據。你描述它的方式(*一個長列是一個GroupCode的表格 - 爲什麼「長」?)沒有明確涉及哪些表格以及它們是如何相關的。目前還不清楚是否可以啓動新組,以及何時啓動新組。如果用戶總是更新*現有*組中的所有產品,則樂觀併發將正常工作。 –