4D v16.3

SET QUERY AND LOCK

Inicio

 
4D v16.3
SET QUERY AND LOCK

SET QUERY AND LOCK 


 

SET QUERY AND LOCK ( bloq ) 
Parámetro Tipo   Descripción
bloq  Booleano in True = bloquear los registros encontrados por las búsquedas False = No bloquear registros

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 utilizarse al interior de una transacción. Si se llama fuera de este contexto, se genera un error. Esto permite un mejor control del bloqueo de registros. Los registros encontrados permanecerán bloqueados hasta que la transacción termine (validada o cancelada). Después de que la transacción se completa, todos los registros se desbloquean.

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

SET QUERY AND LOCK modifica únicamente el comportamiento de los comandos de búsqueda en otras palabras:

Sin embargo, SET QUERY AND LOCK no afecta los otros comandos que modifican la selección actual tales como ALL RECORDS, RELATE MANY, etc.

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 para todos los otros procesos
 DELETE SELECTION([Clientes])
 SET QUERY AND LOCK(False)
 VALIDATE TRANSACTION

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



Ver también 

QUERY

 
PROPIEDADES 

Producto: 4D
Tema: Búsquedas
Número 661

Este comando modifica el conjunto sistema LockedSetEste comando modifica la variable sistema ErrorThis command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v11 SQL

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)