GETLASTVERSION


Синтаксис

GETLASTVERSION(FileName: IDENT);

Описание

Получает экземпляр записи текущей позиции файла FileName, соответствующий жесткому транзакционному срезу. Блокирует запись разделяемо, причем, в отличии от стандартного правила, разделяемая блокировка записи ставится даже если файл находится в нестабильном режиме.

Процедуру имеет смысл применять, когда FileName находится в мягком режиме, чтобы с жесткого среза получить свежий экземпляр записи; в конкурентном режиме, чтобы выполнить разделяемую блокировку и тем самым гарантировать отсутствие конкурентных модификаций других транзакций; в нестабильном режиме, чтобы получить свежий экземпляр записи.

Т.к. GETLASTVERSION сопровождается разделяемой блокировкой, полученный с ее помощью экземпляр записи попадает (начиная с V14.171.010) в собственный срез транзакции. Это означает, что повторное позиционирование в мягком режиме на данную запись даст тот экземпляр, который был получен вызовом GETLASTVERSION, а получить экземпляр с базового среза невозможно.

Если текущая позиция уже была заблокирована разделяемо или монопольно, GETLASTVERSION (начиная с V14.263.070) никакой работы не выполняет, с целью экономии времени выполнения.

Если к моменту выполнения GETLASTVERSION транзакции, завершенные после начала нашей, удалили текущую запись либо модифицировали значения полей текущего или главного индекса файла, то будет выброшено исключение 922.

После успешного выполнения процедуры позиция в курсоре файла относительно других записей очевидно не меняется, т.к. значения полей текущего индекса гарантированно не изменились.

GETLASTVERSION может быть вызвана для курсора, позиция в котором определена, т.е. OCCURE() вернула бы 1. В противном случае выбрасывается исключение 930.