как его избежать? 2 дня уже читаю день ночь доку ниче не понимаю
есть общий доступ — когда могут прийти N пользователей и что-то делать. как правило — только читать. а есть эксклюзивный, когда надо сделать что-то с объектом и никто другой не должен к нему обращаться. https://www.postgresql.org/docs/current/explicit-locking.html
И как сделать чтобы другие тоже могли? Указать что то транзакции?
они и так по умолчанию могут у разных SQL команд — разные уровни блокировки, select не блокирует update или insert и наоборот тоже не блокирует
Вы как то мешаете все в кучу это не настолько сложные вещи, в основе всех правильных вещей лежат кране простые утверждения, в чем суть эксклюзивности, положим у вас есть зеленый забор и каждый может узнать что он зеленый обратившись к этим данным одновременно. Кто то решил его перекрасить в синий и начал этот процесс, пока он не будет завершен забор будет не синим и не зеленым и любое из возможных утверждений не будет верным, в этом случае что бы избежать неоднозначности вы будите вынуждены установить ожидание для всех кто спросит какого цвета забор до того момента пока ответ содержащий утверждение о его цвете не станет истиной это собственно и есть блокировка, пока логика блокировок не становится взаимоисключающей это нормальный рабочий процесс.
Обсуждают сегодня