DELETE - SQL (Comando)

Marca los registros que se van a eliminar.

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

Parámetros

  • FROM [DatabaseName!]TableName
    Especifica la tabla en la que se marcan registros para eliminar.

    DatabaseName! especifica el nombre de una base de datos no actual que contiene la tabla. Incluya el nombre de una base de datos que contenga la tabla si no es la base de datos actual. Incluya el delimitador signo de exclamación (!) después del nombre de la base de datos y antes del nombre de la tabla.

  • WHERE FilterCondition1 [AND | OR FilterCondition2 ...]
    Especifica que Visual FoxPro sólo marca algunos registros para eliminar.

    FilterCondition especifica los criterios que deben satisfacer los registros para marcarlos para su eliminación. Puede incluir tantas condiciones como desee, si las conecta con el operador AND u OR. También puede utilizar el operador NOT para invertir el valor de una expresión lógica o utilizar EMPTY( ) para comprobar si hay campos vacíos.

Observaciones

Los registros marcados para su eliminación no se eliminarán físicamente de la tabla hasta que se ejecute PACK. Los registros marcados para su eliminación pueden recuperarse (o quitar las marcas) con RECALL.

Si se establece SET DELETED como ON, todos los comandos que incluyan un alcance pasarán por alto los registros marcados para su eliminación.

A diferencia de DELETE, DELETE - SQL utiliza el bloqueo de registros cuando marca varios registros para eliminarlos de las tablas abiertas para acceso compartido. Este hecho disminuye la contención de registros en situaciones de varios usuarios, pero puede reducir el rendimiento. Para conseguir el máximo rendimiento, abra la tabla para uso exclusivo o utilice FLOCK( ) para bloquear la tabla.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se utiliza DELETE - SQL para marcar para eliminación todos los registros en los que el campo country contenga USA. Se muestran todos los registros marcados para ser eliminados. Se utiliza RECALL ALL para quitar las marcas de todos los registros marcados para eliminar.

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."

Vea también

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