Команда DELETE

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

Синтаксис:

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

Параметры:
Scope
Задает диапазон записей, которые следует пометить на удаление. Для этого могут использоваться следующие предложения: ALL, NEXT nRecords, RECORD nRecordNumber и REST. Подробнее о предложениях диапазона см. тему Предложения диапазона или главу 2 "Обзор языка программирования" Руководства разработчика.
По умолчанию областью действия команды DELETE является одна текущая запись (предложение NEXT 1).
FOR lExpression1
Задает условие, в соответствии с которым на удаление помечаются только записи, удовлетворяющие логическому условию lExpression1.
Технология Rushmore оптимизирует запрос, созданный командой DELETE ... FOR, если lExpression1 является оптимизируемым выражением и таблица индексирована по функции DELETED( ). В целях достижения наилучшей производительности используйте в предложении FOR оптимизируемое выражение. Подробнее об оптимизируемых по технологии Rushmore выражениях см. темы SET OPTIMIZE и Основы технологии Rushmore и главу 17 "Оптимизация приложений" Руководства разработчика.
WHILE lExpression2
Задает условие, в соответствии с которым записи помечаются на удаление, пока значением выражения lExpression2 остается "истина" (.T.).
IN nWorkArea
Задает рабочую область таблицы, в которой записи помечаются на удаление.
IN cTableAlias
Задает псевдоним таблицы, в которой записи помечаются на удаление.
Если опустить аргументы nWorkArea и cTableAlias, записи помечаются на удаление в таблице, принадлежащей выбранной в данный момент рабочей области.
NOOPTIMIZE
Блокирует оптимизацию команды DELETE по технологии Rushmore. Подробнее см. темы SET OPTIMIZE и Основы технологии Rushmore и главу 17 "Оптимизация приложений" Руководства разработчика.

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

Пример:

* В следующем примере открывается таблица customer в базе данных
* testdata. Команда DELETE помечает на удаление все записи, в которых
* поле country содержит значение USA. Все записи, помеченные для
* удаления, выводятся на экран. Команда RECALL ALL используется для
* снятия маркировки со всех записей, помеченных на удаление.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.