Я мигрирую из ORACLE. В настоящее время я пытаюсь перенести этот вызов:
lkstat := DBMS_LOCK.REQUEST(lkhndl, DBMS_LOCK.X_MODE, lktimeout, true);
Эта функция пытается получить блокировку lkhndl
и возвращает 1, если не удается получить ее через timeout
секунд.
В postgresql я использую
pg_advisory_xact_lock(lkhndl);
Однако кажется, что он ждет блокировки навсегда. pg_try_advisory_xact_lock
немедленно возвращается в случае сбоя. Есть ли способ реализовать версию тайм-аута блокировки?
Существует настройка lock_timeout
, но я не уверен, применима ли она к консультативным блокировкам и как pg_advisory_xact_lock
будет вести себя после истечения времени ожидания.