DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / Fonctions SQL
  • Comment bloquer une table ou les enregistrements d'une requête ?
  • Accès Natif ORACLE
  • Accès Natif MySQL
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
SQLBloque (Fonction)
En anglais : SQLLock
Connecteurs Natifs (Accès Natifs)Disponible uniquement avec ce type de connexion
Permet de bloquer :
  • La table de données dans sa totalité, en lecture et en écriture. Ces données sont inaccessibles aux autres postes.
  • Les enregistrements sélectionnés par la requête. Ces données sont inaccessibles aux autres postes. Cette méthode permet par exemple de mettre à jour des enregistrements. Le résultat de la requête n'est pas retourné.
La fonction SQLBloque peut être utilisée sur tous les Accès Natifs (sauf SQLite et XML) ainsi que sur certains providers OLE DB (selon les capacités du provider et de la base de données). Cette fonction n'a aucun effet pour des tables manipulées par des drivers ODBC.
Exemple
Req est une chaîne
// Début de transaction pour bloquer
SQLTransaction(sqlDébut)
// Bloque toute la table
SQLBloque("CLIENT", "Table")
// Exécute la requête
Req = "UPDATE CLIENT SET NOMCLIENT = 'DUPOND' WHERE REFCLIENT = 1043"
SQLExec(Req, "REQ1")
// Débloquer le fichier
SQLTransaction(sqlFin)
ReqBloque, ReqUpdate sont des chaînes
// Début de transaction pour bloquer
SQLTransaction(sqlDébut)
// Définition de Requête
ReqBloque = "SELECT * FROM CLIENT WHERE REFCLIENT = 1043"
// Bloquer le résultat de la requête SELECT
SQLBloque(ReqBloque)
// Définition d'une requête de mise à jour
ReqUpdate = "UPDATE CLIENT SET NOMCLIENT = 'DUPOND' WHERE REFCLIENT = 1043"
// Exécution d'une requête de mise à jour
SQLExec(ReqUpdate, "REQ1")
// Débloquer les enregistrements
SQLTransaction(sqlFin)
Syntaxe

Bloquer une table de données dans sa totalité Masquer les détails

<Résultat> = SQLBloque(<Nom de la table> , <"Table">)
<Résultat> : Booléen
  • Vrai si le blocage a été effectué,
  • Faux dans le cas contraire.
<Nom de la table> : Chaîne de caractères
Nom de la table de données à bloquer.
<"Table"> : Chaîne de caractères
"Table" : Chaîne de caractères permettant de bloquer une table de données dans sa totalité.

Bloquer les enregistrements sélectionnés par une requête Masquer les détails

<Résultat> = SQLBloque(<Texte de la requête>)
<Résultat> : Booléen
  • Vrai si le blocage a été effectué,
  • Faux dans le cas contraire.
<Texte de la requête> : Chaîne de caractères
Texte de la requête permettant de sélectionner les enregistrements à bloquer.
Remarques

Comment bloquer une table ou les enregistrements d'une requête ?

Pour bloquer une table (ou les enregistrements d'une requête) :
  1. Débutez une transaction (fonction SQLTransaction avec la constante sqlDébut).
  2. Bloquez les enregistrements (fonction SQLBloque).
    Attention : si vous bloquez les enregistrements d'une requête, la requête est exécutée mais le résultat n'est pas renvoyé.
  3. Débloquez les enregistrements en terminant la transaction (fonction SQLTransaction avec la constante sqlFin).
Connecteurs Natifs (Accès Natifs)

Accès Natif ORACLE

Il est possible de paramétrer le comportement de la fonction SQLBloque lorsque l'enregistrement est bloqué (attente infinie, compte-rendu de blocage immédiat, ...). Ce paramétrage est réalisé dans les options du programme WDORAINS.
Connecteurs Natifs (Accès Natifs)

Accès Natif MySQL

Les fonctions SQLBloque et SQLTransaction permettent de gérer les blocages et les transactions uniquement sur les tables MySQL de type "InnoDB".
Composante : wd290hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 02/06/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale