petrovic написал(а):
Удав написал(а):
Разблокировать должен ты сам

Я понял так, если я ставлю блокировку это означает что запись появилась в таблице и я счастливый делаю селект. Блокировка действует пока выполняется программа. Те как только мы возвращаемся из call trans. в нашу программу блокировки транзакции снимаются. Зачем их разблокировать?
Объясните если не сложно.
Дело в том, что установка блокировки ПОСЛЕ выполнения call transaction нужна только для того, чтобы определить, закончился ли процесс обновления данных. Вызов блокировки осуществляешь ты сам. Если блокировка установилась, то для освобождения блокированных тобой данных ты должен вызвать функцию разблокировки DEQUEUE.
И после этого, счастливый, делаешь select
По поводу проверки блокировки в цикле: она нужна для предотвращения "закцикливания" в случае, когда блокировка не снялась, либо кто-то другой успел раньше послать запрос на блокирование этой записи.