Filter


Членство

TABLE

Синтаксис

PROPERTY Filter: STRING[];

Описание

Свойство позволяет получить или назначить значение фильтра данной таблицы БД. Значение должно соответствовать текстовому описанию фильтра, пустая строка означает "нет фильтра".

Если при доступе по записи Filter задан в неправильном формате, выбрасывается исключение 398. Установленное значение файлового фильтра хранится до следующего его переназначения или до окончания сеанса и действует только в пределах собственного подключения. При назначении нового фильтра, сбрасываются позиции курсоров, которые этот фильтр маскирует. Процедура установки файлового фильтра - нетранзакционная. Новое значение файлового фильтра начинает действовать сразу после его успешного назначения. Это означает, что уже следующий запрос будет выполняться с учетом нового значения файлового фильтра.

Свойство добавлено в версии 14.129.040.

Файловый фильтр - это фильтр доступа данного подключения к записям указанной таблицы БД, а также ко всем ее транзитивным USER- и BORROW-файлам, в которых установлен режим TransitiveFiltersAreActive. Файловые фильтры работают по аналогии с фильтрами зон видео-окон (см. FORM_ZONE.PermanentFilter, FORM_ZONE.UserFilter), но отрабатываются сервером, и действуют при выполнении любых серверных запросов. Следовательно их действие распространяется не только на видеосистему, но и на работу ASL-программ. При наличии файлового фильтра сервер скрывает от клиента записи таблицы БД, не удовлетворяющие этому фильтру, и не позволяет клиенту выполнить модификации записей, противоречащие фильтру. Имеется два режима сокрытия данных: маскирование и выбрасывание исключения. Выбор режима управляется атрибутом TABLE_FILTER_MODE TRY-блока.

Вот перечень серверных запросов, которые учитывают файловые фильтры:

Запрос "количество записей в таблице", через который работает, например, ASL-процедура AMOUNT, не учитывает файловый фильтр, поэтому, по большому счету, работает неправильно.

Наложенный файловый фильтр скрывает записи только от пользователя. Контроль целостности (уникальность, ссылочная целостность и т.п.) работает в полном объеме. Без учета фильтра работают и групповые операции, связанные с контролем целостности, - удаление связанных записей в BORROW-файлах при выполнении REMOVE, модификация связанных записей в USER- и BORROW-файлах при выполнении REPLACE и т.п. Т.е. получается, что если на файл Lend наложен некий файловый фильтр LendFilter, а на его BORROW-файл Borrow наложен файловый фильтр BorrowFilter, то при выполнении REMSEL(Lend) при включенном контроле целостности будет учитываться файловый фильтр файла Lend, но не будет учитываться файловый фильтр файла Borrow.