Оператор recordExists |
Оператор recordExists предназначен для оптимизации проверок на существование хотя бы одной записи, удовлетворяющей заданным ограничениям.
Оператор возвращает tsOk, если хотя бы одна запись существует, и tsNotFound в противном случае. Если были какие-либо ошибки при доступе к БД, то оператор возвращает код возврата. Оператор никак не влияет на позицию в логической таблице.
При выполнении recordExists блокирование данных не происходит, даже если перед этим был включен режим чтения записи с блокировкой.
Выигрыш в производительности достигается за счет отсутствия необходимости считывать данные для проверки существования записи. Таким образом, SQL-сервер для выполнения этой операции, если она проходит по индексу, будет считывать только индексные страницы.
<оператор-recordExists> = recordExists <имя-логической-таблицы> [<конструкция-where>]
<имя-логической-таблицы> - имя таблицы, в которой проверяется наличие записей.
<конструкция-where> - ограничения, определяющие проверяемое множество записей (см. раздел "Конструкция where. "). Если данная кострукция отсутствует, то используются подцепки из логической таблицы.
interface RecExists; create view as select X$Files.* from X$Files where (('C_CORE2' == X$Files.XF$COMPONENT)) ; screen scrTest; show at (,,20,10); << Тест >> end; handleEvent cmInit: { // ограничение задано в операторе if (recordExists X$Files where (('C_CORE' == X$Files.XF$COMPONENT)) = tsOK) message ('Компонент C_CORE присутствует в БД'); else message ('В БД нет компонента C_CORE'); // ограничение берется из логической таблицы if (recordExists X$Files = tsOK) message ('Компонент C_CORE2 присутствует в БД'); else message ('В БД нет компонента C_CORE2'); } end; end.