Поправьте меня, может, я не понимаю.
Все эти select for update — это же про то, как блокировать данные в транзакции при изменении (т.е. сначала select, какая-то обработка, тут же update). А не про то, что Вася открыл окно, select-ом for update выбрал и заблокировал строку на длительное время, а потом через час сделал update.
В вопросе речь идет про non-lock concurrency control. Это когда на уровне логики приложения проверяется, не изменена ли запись кем-то относительно момента, когда мы ее вывели в окно. И это не в транзакции.
Мне кажется, это не вопрос о PostgreSQL.
— Как проверять, когда со строкой работают несколько пользователей? Какие варианты есть?
— Во-первых, можно перед показом строки в форме вЫчитать значения всех колоночек и убедиться, что они не поменялись. Второй вариант, более удобный: высчитать хэш на всех
колонках, тем более, что колонки там могут быть большие и толстые. А хэш не такой большой.
Вопрос из любопытства — Джанни потом не приходил к вам выяснять отношения? «Я хотел как лучше, ты все не так поняла и т.д.» — было? :)
Я к тому, что такие Джанни ведь не понимают, чего творят. При этом самооценка у них завышена.
Неприятие идеологии системы исполнителями: «Ваша система не заработает. У нас есть Алевтина Светозаровна – умнейшая женщина, 60 лет на заводе, все в голове держит, никакая система не учтет всего, что она помнит».
Как показывает практика, с умнейшими действительно полезно найти общий язык.
А у вас красной нитью — «мы пришли причинить вам счастье»
Чудес не бывает. Если некомпетентный/ленивый работает в команде, которая выдает хорошие результаты, это означает, что работает кто-то другой. Кто-то везет, кто-то едет, всегда так было.
Все эти select for update — это же про то, как блокировать данные в транзакции при изменении (т.е. сначала select, какая-то обработка, тут же update). А не про то, что Вася открыл окно, select-ом for update выбрал и заблокировал строку на длительное время, а потом через час сделал update.
В вопросе речь идет про non-lock concurrency control. Это когда на уровне логики приложения проверяется, не изменена ли запись кем-то относительно момента, когда мы ее вывели в окно. И это не в транзакции.
Мне кажется, это не вопрос о PostgreSQL.
Серьезно, это вопрос на конференции?
Да ну ладно. Еще как берут людей с большим опытом. Вам просто не повезло в вашей конкретной ситуации.
Я к тому, что такие Джанни ведь не понимают, чего творят. При этом самооценка у них завышена.
Как показывает практика, с умнейшими действительно полезно найти общий язык.
А у вас красной нитью — «мы пришли причинить вам счастье»