我有一个长表是一个GroupCode长列。我可以有多组产品,因此为了获得一个组的所有产品,我只需要获得与GroupCode相同的所有产品。是否有可能以乐观并发确保这种情况?
我可以将产品从一个组更改为另一个组,如果我从一个组更改产品,我希望组的所有产品更改为新组。
如果我用乐观并发,它会发生这样的:
一个用户想从一组改变产品,所以他得到所有的产品相同groupCode。将新的groupCode设置为所有这些产品。
第二位用户将新产品添加到组中。但是第一个用户没有这个产品,因为他在第二个用户添加新产品之前得到了所有的产品。
所以最后,一个新产品有一个错误的GroupCode,因为代码不正确,因为该组的所有产品都改变为新组。所以我会有一个只有一个产品的团队,这是不正确的。
由于悲观并发性,第一次使用得到该组的所有产品,阻止所有产品。
第二个用户尝试向该组添加新产品,为此,首先尝试将该组的其中一个产品作为参考产品,但第一个用户如何阻止该产品,第二个用户有等待。
第一位用户将所有产品更改为新组并取消阻止所有产品。
第二个用户获得具有新groupCode的参考产品,因此新产品被添加到正确的组中。总之,我希望当我将产品从一个组更改为另一个组时,我想要更改组的所有产品,并避免新产品属于旧组。
是否有可能通过乐观并发来解决这种情况?或者我必须使用悲观并发?
看来你想对组执行操作,而不是对组的产品执行操作。 –
但我没有组表,我有产品具有相同的代码。所以我想更新Products.GroupCode列,所以我想在procuts中执行一个操作:更新产品GroupCode = 111其中GroupCode = 000; –
请显示一些示例数据。你描述它的方式(*一个长列是一个GroupCode的表格 - 为什么“长”?)没有明确涉及哪些表格以及它们是如何相关的。目前还不清楚是否可以启动新组,以及何时启动新组。如果用户总是更新*现有*组中的所有产品,则乐观并发将正常工作。 –