Freigeben über


DELETE-SQL-Befehl

Markiert Datensätze zum Löschen.

DELETE FROM [DatabaseName!]TableName 
   [WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]

Parameter

  • FROM [DatabaseName!]TableName
    Gibt den Alias der Tabelle an, deren Datensätze zum Löschen markiert werden.

    DatabaseName! gibt den Namen einer nicht aktuellen Datenbank an, die die Tabelle enthält. Ist die Datenbank, die die Tabelle enthält, nicht die aktuelle, müssen Sie den Namen der aktuellen Datenbank angeben. Fügen Sie ein Ausrufezeichen (!) als Trennzeichen zwischen dem Datenbank- und dem Tabellennamen ein.

  • WHERE FilterCondition1 [AND | OR FilterCondition2 ...]
    Gibt an, dass Visual FoxPro nur bestimmte Datensätze zum Löschen markiert.

    FilterCondition gibt die Kriterien an, die die Datensätze zum Markieren erfüllen müssen. Sie können beliebig viele Filterbedingungen angeben und sie mit dem Operator AND oder OR verbinden. Sie können auch den Operator NOT verwenden, um den Wert eines logischen Ausdrucks umzukehren bzw. EMPTY( ), um auf ein leeres Feld zu überprüfen.

Hinweise

Zum Löschen markierte Datensätze werden erst dann physikalisch aus der Tabelle entfernt, 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.

Ist SET DELETED auf ON gesetzt, werden die zum Löschen markierten Datensätze von allen Befehlen ignoriert, bei denen ein Gültigkeitsbereich angegeben wird.

Im Gegensatz zu DELETE verwendet DELETE - SQL die Datensatzsperrung beim Markieren mehrerer Datensätze zum Löschen in Tabellen, die zur gemeinsamen Nutzung geöffnet sind. Dadurch werden Datensatzkonflikte im Mehrbenutzerbereich verringert, jedoch unter Umständen auch die Leistung. Um eine optimale Leistung zu erzielen, öffnen Sie die Tabelle zur exklusiven Nutzung oder verwenden FLOCK( ) zum Sperren der Tabelle.

Beispiel

Im folgenden Beispiel wird die Tabelle customer in der Datenbank testdata geöffnet. Mit DELETE - SQL 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
CLEAR

OPEN DATABASE HOME(2)+"Data\testdata"
USE customer  && Open Customer table

DELETE FROM customer WHERE country = "USA"   && Mark for deletion

CLEAR
LIST FIELDS company, country FOR DELETED( )  && List marked records
* If the file were packed at this point the records would be deleted
WAIT WINDOW "Records currently marked for deletion"+CHR(13) + ;
   "Press any key to revert..."

* Unmark all records marked for deletion
RECALL ALL
CLEAR
* Verify reverted records
COUNT FOR DELETED( )=.T. TO nDeleted

* Convert nDeleted to a character string and display information
WAIT WINDOW ALLTRIM(STR(nDeleted)) + " records marked for deletion."

Siehe auch

DELETE | DELETED( ) | PACK | RECALL | SET DELETED