4D v16.3

SET QUERY AND LOCK

Accueil

 
4D v16.3
SET QUERY AND LOCK

SET QUERY AND LOCK 


 

SET QUERY AND LOCK ( verrou ) 
Paramètre Type   Description
verrou  Booléen in Vrai = verrouiller les enregistrements trouvés par les recherches, Faux = ne pas les verrouiller

La commande SET QUERY AND LOCK vous permet de demander le verrouillage automatique des enregistrements trouvés par toutes les recherches qui suivent son appel dans la transaction courante. Ce mécanisme permet de s’assurer que les enregistrements ne puissent pas être modifiés par un process autre que le process courant entre une recherche et la manipulation des résultats.

Par défaut, les enregistrements trouvés par les recherches ne sont pas verrouillés. Passez Vrai dans le paramètre verrou pour activer le verrouillage.

Cette commande doit impérativement être utilisée à l’intérieur d’une transaction. Si elle est appelée hors du contexte d’une transaction, une erreur est générée. Ce principe permet un meilleur contrôle du verrouillage des enregistrements. Les enregistrements trouvés restent verrouillés tant que la transaction n’a pas été terminée (qu’elle ait été validée ou annulée). A l’issue de la transaction, tous les enregistrements sont déverrouillés.

Le verrouillage des enregistrements est effectif pour toutes les tables dans la transaction courante.

Lorsqu'une instruction SET QUERY AND LOCK(Vrai) a été exécutée, les commandes de recherche (par exemple QUERY) adoptent un fonctionnement spécifique si un enregistrement déjà verrouillé est trouvé :

  • la recherche est stoppée et la variable système OK prend la valeur 0,
  • la sélection courante est vidée,
  • l'ensemble système LockedSet contient l'enregistrement verrouillé à l'origine de l'arrêt de la recherche.

Par conséquent, dans ce contexte il est nécessaire de tester l'ensemble LockedSet à l'issue d'une recherche infructueuse (sélection courante vide et/ou variable OK à 0) afin de déterminer la cause de l'échec.

Appelez SET QUERY AND LOCK(Faux) afin de désactiver le mécanisme après usage.

SET QUERY AND LOCK modifie uniquement le comportement des commandes de recherche, c'est-à-dire :

En revanche, SET QUERY AND LOCK n'affecte pas les autres commandes qui modifient la sélection courante telles que ALL RECORDS, RELATE MANY, etc.

Exemple  

Dans cet exemple, il n’est pas possible de supprimer un client qui aurait été passé de la catégorie “C” à la catégorie “A” par un autre process entre le QUERY et le DELETE SELECTION :

 START TRANSACTION
 SET QUERY AND LOCK(True)
 QUERY([Clients];[Clients]Catégorie=C)
  `A cet instant, les enregistrements trouvés sont automatiquement verrouillés pour tous les autres process
 DELETE SELECTION([Clients])
 SET QUERY AND LOCK(False)
 VALIDATE TRANSACTION

Si la commande est appelée hors du contexte d’une transaction, une erreur est générée.



Voir aussi  

QUERY

 
PROPRIÉTÉS 

Produit : 4D
Thème : Recherches et tris
Numéro : 661

Cette commande modifie l'ensemble système LockedSetCette commande modifie la variable système ErrorCommande(s) éligible(s) à l'exécution dans un process préemptif

 
HISTORIQUE 

Créé : 4D v11 SQL

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)