Некоторые модификации не являются
действительно важно. Итак, я хочу сделать
эти модификации просто последние
выиграть.
Хотя транзакции должны быть атомарными , так что мы можем говорить в терминах временного порядка, это не просто, и всегда немного сложно говорить о первом / последнем, когда транзакции задействованы. Э.Г.
T1: start
T1: read row X with value A
T2: start
T2: read row X with value A
T2: write row X with value A2
T2: commit
T1: write row X with value A1
T1: commit
Пока T2 начинается после T1, изменение A2 теряется. Какая транзакция является "последней"? Тот, который начался последним, или тот, который закончился последним? (Фиксация действительно атомарная, но транзакции все еще имеют длительность, из-за чего их трудно рассуждать.)
Оптимистическая или пессимистическая блокировка предназначена для того, чтобы избежать такой ситуации, чтобы мы могли лучше мыслить в терминах порядка транзакций.
Тем не менее, чтобы вернуться к вашему вопросу, если это действительно то, что вам нужно, вы можете попытаться отобразить одну и ту же таблицу базы данных дважды в двух сущностях: в одной сущности у вас есть @version
, а в другой нет. Но это может быть довольно запутанным.