Re: [FireBird] deadlock; update conflicts with concurrent up
От: sushko Россия  
Дата: 17.02.16 10:42
Оценка:
Дополню свой собственный пост. Попробовал вместо следующего запроса, исполняемого ради блокировки записи:
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 тупо не работает.
Бесплатный генератор отчетов для программ на C/C++
http://www.oxetta.com
Отредактировано 17.02.2016 10:43 sushko . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.