Share via


DELETE (Comando)

Marca los registros que se van a eliminar.

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

Parámetros

  • Scope
    Especifica un intervalo de registros que desea marcar para su eliminación. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST.

    Para obtener más información acerca de las cláusulas de alcance, vea el tema Cláusulas de alcance.

    Para obtener más información acerca de las cláusulas de alcance, vea el tema Introducción al lenguaje.

    El alcance predeterminado para el comando DELETE es el registro actual (NEXT 1).

  • FOR lExpression1
    Especifica una condición por la cual solamente se marcan para su eliminación los registros que satisfacen la condición lógica lExpression1.

    Rushmore optimizará una consulta creada con DELETE ... FOR si lExpression1 es una expresión optimizable y la tabla está indizada por DELETED( ). Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

    Si desea obtener más información acerca de las expresiones optimizables con Rushmore, vea SET OPTIMIZE y Usar Rushmore para agilizar el acceso a los datos en Optimizar aplicaciones.

  • WHILE lExpression2
    Especifica una condición por la cual los registros se marcan para su eliminación siempre y cuando lExpression2 dé como resultado verdadero (.T.).

  • IN nWorkArea
    Especifica el área de trabajo de la tabla en la cual se marcan los registros para su eliminación.

  • IN cTableAlias
    Especifica el alias de la tabla en la cual se marcan los registros para su eliminación.

    Si omite nWorkArea y cTableAlias, los registros se marcarán para su eliminación en la tabla del área de trabajo seleccionada actualmente.

  • NOOPTIMIZE
    Desactiva la optimización Rushmore de DELETE.

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.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se utiliza DELETE 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
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

Vea también

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