Freigeben über


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