Сообщение Re: [FireBird] deadlock; update conflicts with concurrent up от 17.02.2016 10:42
Изменено 17.02.2016 10:43 sushko
Дополню свой собственный пост. Попробовал вместо следующего запроса, исполняемого ради блокировки записи:
S>
выполнить другие запросы (с фетчем записей):
S>
По факту, если присутствует WITH LOCK, то в результате получается та же фигня, что и с просто UPDATE (см. выше); если WITH LOCK отсутствует, то запись просто не блокируется, т.е. FOR UPDATE тупо не работает.
S>
S>UPDATE remainders SET id=id WHERE id=?
S>выполнить другие запросы (с фетчем записей):
S>
S>SELECT * FROM remainders WHERE id=? FOR UPDATE
S>SELECT * FROM remainders WHERE id=? WITH LOCK
S>SELECT * FROM remainders WHERE id=? FOR UPDATE WITH LOCK
S>По факту, если присутствует WITH LOCK, то в результате получается та же фигня, что и с просто UPDATE (см. выше); если WITH LOCK отсутствует, то запись просто не блокируется, т.е. FOR UPDATE тупо не работает.
Re: [FireBird] deadlock; update conflicts with concurrent up
Дополню свой собственный пост. Попробовал вместо следующего запроса, исполняемого ради блокировки записи:
выполнить другие запросы (с фетчем записей):
По факту, если присутствует WITH LOCK, то в результате получается та же фигня, что и с просто запросом на UPDATE (см. выше); если WITH LOCK отсутствует, то запись просто не блокируется, т.е. FOR UPDATE тупо не работает.
UPDATE remainders SET id=id WHERE id=?выполнить другие запросы (с фетчем записей):
SELECT * FROM remainders WHERE id=? FOR UPDATE
SELECT * FROM remainders WHERE id=? WITH LOCK
SELECT * FROM remainders WHERE id=? FOR UPDATE WITH LOCKПо факту, если присутствует WITH LOCK, то в результате получается та же фигня, что и с просто запросом на UPDATE (см. выше); если WITH LOCK отсутствует, то запись просто не блокируется, т.е. FOR UPDATE тупо не работает.