Оператор 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.