Помечает записи для удаления.

DELETE [Scope] [FOR lExpression1] [WHILE lExpression2]
   [IN nWorkArea | cTableAlias] [NOOPTIMIZE]

Параметры

Scope

Задает диапазон записей, которые следует пометить на удаление. По умолчанию областью действия команды DELETE является одна текущая запись (NEXT 1). Возможны следующие предложения диапазона: ALL, NEXTnRecords, RECORD nRecordNumber, и REST.

Подробнее о предложениях диапазона смотрите Предложения диапазона.

FOR lExpression1

Задает условие, в соответствии с которым на удаление помечаются только записи, удовлетворяющие логическому условию lExpression1.

Технология Rushmore оптимизирует запрос, созданный командой DELETE ... FOR, если lExpression1 является оптимизируемым выражением и таблица индексирована по функции DELETED( ). В целях достижения наилучшей производительности используйте в предложении FOR оптимизируемое выражение.

Подробнее об оптимизируемых по технологии Rushmore выражениях смотрите Команда SET OPTIMIZE, и Использование оптимизации запросов Rushmore для ускорения доступа к данным in Оптимизация приложений.

WHILE lExpression2

Задает условие, в соответствии с которым записи помечаются на удаление, пока значением выражения lExpression2 остается "истина" (.T.).

IN nWorkArea

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

IN cTableAlias

Задает псевдоним таблицы, в которой записи помечаются на удаление.

Если опустить nWorkArea и cTableAlias, записи помечаются на удаление в таблице, принадлежащей выбранной в данный момент рабочей области.

NOOPTIMIZE

Отключает оптимизацию команды DELETE по технологии Rushmore.

Expand imageЗамечания

Записи, помеченные на удаление, не будут физически удалены из таблицы до тех пор, пока не будет выдана команда PACK. Восстановить записи, помеченные на удаление (снять маркировку) можно по команде RECALL.

Expand imageПример

В следующем примере открывается таблица customer в базе данных testdata. DELETE помечает на удаление все записи, в которых поле country содержит значение USA. Все записи, помеченные для удаления, выводятся на экран. Команда RECALL ALL используется для снятия маркировки со всех записей, помеченных на удаление.

  CopyCode imageCopy Code
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table

DELETE FOR country = 'USA'  && Mark for deletion
CLEAR
LIST FIELDS company, country FOR DELETED( ) && List marked records
RECALL ALL  && Unmark all records marked for deletion

Expand imageСмотрите также