SET QUERY AND LOCK

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 11


SET QUERY AND LOCK (bloq)

ParámetroTipoDescripción
bloqBooleanoTrue = bloquear los registros encontrados por las
búsquedas
False = No bloquear registros

Descripción

El comando SET QUERY AND LOCK permite solicitar el bloqueo automático de los registros encontrados por todas las búsquedas que siguen el llamado de este comando en la transacción actual. Esto significa que los registros no pueden ser modificados por un proceso diferente al proceso actual entre una búsqueda y la manipulación de resultados.

Por defecto, los registros encontrados por las búsquedas no están bloqueados. Pase True en el parámetro bloq para activar el bloqueo.

Este comando debe imperativamente ser utilizado al interior de una transacción. Si se llama por fuera de este contexto, se genera un error. Esto permite un mejor control del bloqueo de registros. Los registros encontrados permanecerán bloqueados mientras que la transacción no haya terminado (validada o cancelada). Después de que la transacción se completa, todos los registros son desbloqueados.

Los registros están bloqueados para todas las tablas en la transacción actual.

Cuando una instrucción SET QUERY AND LOCK(True) ha sido ejecutada, los comandos de búsqueda (por ejemplo QUERY) adoptan un funcionamiento específico si se encuentra un registro que ya está bloqueado:

- La búsqueda se detiene y la variable sistema OK toma el valor 0,

- La selección actual queda vacía,

- El conjunto sistema LockedSet contiene el registro bloqueado que causó que la búsqueda se detuviera. Por lo tanto, en este contexto es necesario probar el conjunto LockedSet definido después de una búsqueda infructuosa (selección actual vacía y/o variable OK en 0) para determinar la causa de la falla.

Llame SET QUERY AND LOCK(False) con el fin de desactivar el mecanismo posteriormente.

Ejemplo

En este ejemplo, no es posible borrar un cliente que habrías sido pasado de la categoría "C" a la categoría "A" en otro proceso entre QUERY y DELETE SELECTION:

   START TRANSACTION
   SET QUERY AND LOCK(True)
   QUERY([Clientes];[Clientes]Categoria="C")
      `En este momento, los registros encontrados son bloqueados automáticamente por todos los otros procesos
   DELETE SELECTION([Clientes])
   SET QUERY AND LOCK(False)
   VALIDATE TRANSACTION 

Gestión de errores

Si el comando no se llama en el contexto de una transacción, se genera un error.

Ver también

QUERY.


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente