CONCURRENTGET
Библиотека
V32.EXE
Синтаксис
CONCURRENTGET(file: IDENT;
fileField: FIELDIDENT,
CalcMethod: SCAL[2]): ANYTYPE;
Описание
Если текущая запись курсора файла file могла быть модифицирована конкурентными
операциями независимых транзакций, то экземпляр записи, полученный
процедурами
позиционирования не учитывает влияние этих операций. Их учитывает функция CONCURRENTGET.
Она возвращает значение поля fileField текущей позиции
файла file с учетом всех имеющихся на момент ее вызова конкурентных
операций над данной записью. fileField - это имя поля файла file, которое указывается без префикса файла,
но с индексом, если это массивовое поле.CONCURRENTGET учитывает все
конкурентные модификации собственной и ее главных транзакций, все
CONCURRENTRESET-операции чужих транзакций, а CONCURRENTADD-операции
чужих транзакций учитывает в зависимости от значения
параметра CalcMethod (берется из набора констант CONCURRENTGETMHT):
- если его значение CONCURRENTGET_MIN, то возвращает
минимальное значение поля этой записи, соответствующее предположению, что все
имеющиеся транзакции с выполненными CONCURRENTADD,
увеличивающими значение поля fileField данной записи, откатятся, а транзакции с
CONCURRENTADD, уменьшающими его значение, успешно завершатся
- если параметр CalcMethod имеет значение CONCURRENTGET_MAX,
то
возвращает максимальное значение поля этой записи, соответствующее
предположению, что все имеющиеся транзакции с выполненными CONCURRENTADD,
увеличивающими значение поля fileField данной записи, завершатся, а транзакции с
CONCURRENTADD, уменьшающими его значение, откатятся.
CONCURRENTGET может быть вызвана для курсора, позиция в котором
определена, т.е. OCCURE() вернула бы 1. В противном случае выбрасывается
исключение 930.
Подробнее о том, как
система обрабатывает конкурентные операции см. здесь.
См. также