DELETE-Befehl
Markiert Datensätze zum Löschen.
DELETE [Scope] [FOR lExpression1] [WHILE lExpression2]
[IN nWorkArea | cTableAlias] [NOOPTIMIZE]
Parameter
Scope
Gibt einen Bereich von Datensätzen an, die zum Löschen markiert werden sollen. Die Bereichsklauseln sind: ALL, NEXT nRecords, RECORD nRecordNumber und REST.Weitere Informationen zu Bereichsklauseln finden Sie unter Bereichsklauseln
und Überblick über die Sprache.
Der Standardbereich für DELETE ist der aktuelle Datensatz (NEXT 1).
FOR lExpression1
Gibt eine Bedingung an, dass nur die Datensätze, die die logische Bedingung lExpression1 erfüllen, zum Löschen markiert werden.Eine mit DELETE ... FOR erstellte Abfrage wird mit dem Rushmore-Verfahren optimiert, wenn lExpression1 ein optimierbarer Ausdruck und die Tabelle nach DELETED( ) indiziert ist. Die beste Leistung erreichen Sie, indem Sie in der FOR-Klausel einen optimierbaren Ausdruck verwenden.
Weitere Informationen zu mit Hilfe von Rushmore optimierbaren Ausdrücken finden Sie unter SET OPTIMIZE und unter Verwenden von Rushmore zum Beschleunigen des Datenzugriffs in Optimieren von Anwendungen.
WHILE lExpression2
Gibt eine Bedingung an, dass Datensätze nur zum Löschen markiert werden, solange die Auswertung des logischen Ausdrucks lExpression2 den Wert Wahr (.T.) ergibt.IN nWorkArea
Gibt den Arbeitsbereich der Tabelle an, deren Datensätze zum Löschen markiert werden.IN cTableAlias
Gibt den Alias der Tabelle an, deren Datensätze zum Löschen markiert werden.Wenn Sie nWorkArea und cTableAlias nicht angeben, werden Datensätze der Tabelle im aktuellen Arbeitsbereich zum Löschen markiert.
NOOPTIMIZE
Deaktiviert die Rushmore-Optimierung für DELETE.
Hinweise
Zum Löschen markierte Datensätze werden erst dann physikalisch aus der Tabelle gelöscht, wenn PACK eingegeben wurde. Die Markierung von Datensätzen, die zum Löschen markiert sind, kann mit RECALL aufgehoben und die Datensätze können wiederhergestellt werden.
Beispiel
Im folgenden Beispiel wird die Tabelle customer
in der Datenbank testdata
geöffnet. Mit DELETE werden alle Datensätze zum Löschen markiert, bei denen das Feld country
den Wert USA enthält. Diese Datensätze werden dann angezeigt. Anschließend wird die Markierung mit RECALL ALL wieder aufgehoben.
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
Siehe auch
DELETE - SQL | DELETED( ) | PACK | RECALL | SET DELETED