Информация об изменениях

Сообщение Re: [FireBird] deadlock; update conflicts with concurrent up от 17.02.2016 10:42

Изменено 17.02.2016 10:43 sushko

Дополню свой собственный пост. Попробовал вместо следующего запроса, исполняемого ради блокировки записи:
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
Дополню свой собственный пост. Попробовал вместо следующего запроса, исполняемого ради блокировки записи:
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 тупо не работает.