DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Gestion des triggers
  • Présentation
  • Création des triggers serveur sous l'analyse
  • Préalable
  • Prise en compte des triggers serveur
  • Procédure stockée liée au trigger
  • Tester une procédure stockée appelée par un trigger
  • Manipulation des triggers serveur par programmation
  • Les fonctions du WLangage
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
Triggers serveur
HFSQL Client/ServeurDisponible uniquement avec ce type de connexion
Présentation
Les triggers serveur sont des procédures stockées exécutées par le serveur avant ou après une action d'écriture effectuée sur un fichier de la base de données.
Comme pour les triggers classiques, deux types de triggers serveur sont disponibles :
  • Les triggers "AVANT" :
    Un trigger "AVANT" est appelé :
    • avant l'exécution d'une fonction HFSQL (HAjoute, HModifie, HSupprime, ...).
    • avant l'exécution d'une fonction de gestion des champs Table fichier.
      Un trigger "AVANT" permet par exemple de vérifier la cohérence des données des rubriques d'un enregistrement. Avec ce type de trigger, il est possible d'initialiser une variable HFSQL pour annuler l'exécution de la fonction HFSQL associée.
  • Les triggers "APRÈS" :
    Un trigger "APRÈS" est appelé :
    • après l'exécution d'une fonction HFSQL (sauf si le programme a été interrompu pendant l'exécution de cette fonction).
    • après l'exécution d'une fonction de gestion des champs Table fichier.
      Un trigger "APRÈS" permet par exemple de gérer le traitement des erreurs.
Caractéristiques des triggers serveur :
  • Plusieurs triggers serveur peuvent être associés à un même fichier de données.
  • Les triggers étant définis sur le serveur, ils sont pris en compte quelle que soit l'application cliente exécutée. La prise en compte d'un nouveau trigger défini sur le serveur est automatique.
  • Les triggers serveur sont exécutés :
Création des triggers serveur sous l'analyse

Préalable

Pour créer un trigger serveur :
  • sous le volet "Analyse", dans le groupe "Création", déroulez "Nouveau" et sélectionnez "Trigger".
  • sélectionnez l'option "Nouveau trigger" du menu contextuel du volet ancrable "Analyse".
  • affichez l'onglet "Triggers HF" de la fenêtre de description du fichier de données et cliquez sur le bouton "Créer un nouveau trigger".
Ces différentes options affichent la fenêtre de description du trigger serveur.
La fenêtre de description d'un trigger permet d'indiquer :
  • dans l'onglet "Général" :
    • le nom du trigger.
    • la procédure stockée WLangage qui est associée au trigger.
    • le mode de déclenchement du trigger (AVANT ou APRES l'exécution des fonctions HFSQL).
    • les fonctions HFSQL qui déclencheront le trigger.
  • dans l'onglet "Général" :
    • les fichiers de données associés au trigger.
Remarque : Les triggers créés sont visibles :
  • dans le volet de l'analyse.
  • directement dans le graphe de l'analyse : si un trigger serveur est associé à un fichier de données, une icône spécifique apparaît : .

Prise en compte des triggers serveur

Les triggers serveur créés dans l'analyse sont créés sur le serveur :
Les triggers installés sur le serveur seront automatiquement pris en compte par les applications clientes.

Procédure stockée liée au trigger

Une procédure (ou une procédure stockée) de type trigger ne reçoit aucun paramètre. Toutefois, un certain nombre de variables d'état HFSQL sont positionnées avant chaque appel :
H.NomFichierChaîne de caractères : Nom logique du fichier de données dont le trigger est activé
H.ActionCaractère initialisé à "A" pour un trigger Avant, "P" pour un trigger après.
H.FonctionTriggerChaîne de caractères : Nom de la fonction HFSQL qui a déclenché le trigger.
Avertissement
La variable H.FonctionTrigger est dépréciée au profit de la variable H.NuméroFonctionTrigger. L'information donnée par la variable est indépendante de la langue utilisée pour l'exécution de l'application.
Nouveauté SaaS
H.NuméroFonctionTrigger
Constante permettant de connaître la fonction qui a déclenché le trigger :
  • htrgHAjoute : La fonction qui a déclenché le trigger est HAjoute.
  • htrgHEcrit : La fonction qui a déclenché le trigger est HEcrit.
  • htrgHModifie : La fonction qui a déclenché le trigger est HModifie.
  • htrgHRaye : La fonction qui a déclenché le trigger est HRaye.
  • htrgHSupprime : La fonction qui a déclenché le trigger est HSupprime.
H.AFairePendant l'exécution d'un trigger avant :
  • annulation de l'exécution de la fonction HFSQL en cours en affectant "A" à la variable d'état HFSQL : H.AFaire = "A". Dans ce cas, l'action n'est pas effectuée et la fonction (HAjoute, HModifie, etc.) renvoie Vrai (pas d'erreur).
  • annulation de l'exécution de la fonction HFSQL en cours en affectant "E" à la variable d'état HFSQL : H.AFaire = "E". Dans ce cas, l'action n'est pas effectuée et la fonction (HAjoute, HModifie, etc.) renvoie Faux. Le message d'erreur est le suivant : "L'action sur le fichier XXX a été interrompue par le trigger".

Remarque : Dans le cas où un trigger "AVANT" et un trigger "APRÈS" sont associés à une fonction HFSQL, si le trigger "AVANT" annule l'exécution de la fonction HFSQL (en positionnant H.AFaire à "A") le trigger "APRÈS" n'est pas déclenché.
Le mot-clé MonFichier permet de connaître et de manipuler dans le code de la procédure stockée le nom du fichier de données sur lequel le trigger a été déclenché.
Important : Pour qu'une procédure stockée lancée depuis un trigger serveur accède aux données, il faut utiliser la fonction HDéclareExterne. Cette fonction permet de déclarer les sources de données qui seront utilisées dans les traitements de la procédure stockée.
En effet, lorsqu'une procédure stockée est lancée par exemple depuis le Centre de Contrôle HFSQL, il n'y a pas d'analyse en cours : les données HFSQL Client/Serveur ne sont pas immédiatement accessibles.
Si la fonction HDéclareExterne n'est pas utilisée dans le code de la procédure stockée, la procédure provoquera une erreur fatale, notée dans le journal des événements du système.

Tester une procédure stockée appelée par un trigger

Pour tester une procédure stockée :
  1. Sélectionnez la procédure stockée à tester dans le volet de l'analyse.
  2. Sélectionnez l'option "Tester la procédure" dans le menu contextuel de la procédure stockée.
  3. La fenêtre de saisie des paramètres de la procédure s'affiche. Dans cette fenêtre, il est possible de :
    • Saisir les paramètres de la procédure.
    • Lancer le test de la procédure.
      Remarque : cette fenêtre peut être utilisée pour relancer plusieurs fois l'exécution en modifiant les paramètres.
  4. Lorsque le test de la procédure est lancé :
    • Si nécessaire une mise à jour de la procédure stockée sur le serveur est proposée.
    • La procédure est lancée sur le serveur.
    • La valeur de retour de la procédure est affichée si nécessaire.
Remarques/limitations :
  • Le port de débogage est le port 27281 par défaut. Il est nécessaire d'ouvrir ce port dans le firewall. Ce port peut être modifié dans le fichier HFConf.ini.
  • Pour lancer le test d'une procédure stockée, il est nécessaire d'avoir le droit de débogage sur la base de données.
  • Les traces utilisées dans les procédures stockées sont affichées dans le volet de trace du débogueur.
  • Le code de la procédure stockée peut contenir des points d'arrêt : le débogueur sera alors lancé.
  • Les éléments déployés sur le serveur sont utilisés lors du test.
  • La fonction EnModeTest renvoie Vrai.
Manipulation des triggers serveur par programmation

Les fonctions du WLangage

Plusieurs fonctions permettent de manipuler les triggers serveur :
HActiveTriggerServeurRé-active un trigger serveur précédemment désactivé par la fonction HDésactiveTriggerServeur.
HCréeTriggerServeurAjoute ou modifie un trigger serveur sur le serveur HFSQL.
HDécritTriggerServeurAjoute ou modifie un trigger serveur.
HDésactiveTriggerServeurDésactive un trigger Serveur HFSQL Client/Serveur sur un serveur.
HDétruitTriggerServeurDétruit un trigger serveur.
HListeTriggerServeurListe les différents triggers disponibles sur une connexion ou sur un des fichiers de la connexion.
HTriggerEnregistrementAvantRécupère la valeur de l'enregistrement en cours avant l'exécution du ou des triggers.
Ces fonctions sont des fonctions avancées.
Liste des exemples associés :
WD Trigger serveur Exemples didactiques (WINDEV) : WD Trigger serveur
[ + ] Cet exemple permet de montrer comment utiliser des triggers serveur.
Les triggers serveur s'exécutent sur le serveur à chaque Ajout/Modification/Suppression d'enregistrement.
Version minimum requise
  • Version 11
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 22/08/2024

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