В нашем приложении у нас есть код, подобный приведенному ниже, в Elixir:
Multi.new()
|> Multi.update(
:some_operation_name,
Entity
|> Repo.preload(:some_entity)
|> Ecto.Changeset.optimistic_lock(:lock_version)
|> Ecto.Changeset.change(some_id: some_uuid)
)
|> Repo.transaction()
Мы используем базу данных MySQL, я нахожу этот код немного странным, поскольку он использует optimistic_locking внутри транзакции.
|> Ecto.Changeset.optimistic_lock(:lock_version)
Мне интересно, могли бы мы столкнуться с проблемами из-за использования optimistic_locking внутри транзакции (пессимистическая блокировка).