|
|
|
|
|
- Trigger sur les fonctions de manipulation des tables
- Variables permettant de gérer les triggers
HDécritTrigger (Fonction) En anglais : HDescribeTrigger
Non disponible avec ces types de connexion
Ajoute ou modifie un trigger sur un fichier de données HFSQL. Un trigger est une procédure en WLangage appelée automatiquement par le moteur HFSQL à chaque exécution d'une fonction HFSQL. Les requêtes de type UPDATE, INSERT ou DELETE déclenchent également l'exécution du trigger (Attention : le trigger n'est pas déclenché sur des tables accédées via un Connecteur Natif).
LOCAL
ResultatTrigger est un booléen
ResultatTrigger = HDécritTrigger("*", "HAJOUTE,HMODIFIE,HSUPPRIME,HRAYE,HECRIT", ...
"VerifDroitUtilisateur", hTriggerAvant)
SI ResultatTrigger = Faux ALORS
Erreur("Erreur sur un trigger : " + HErreurInfo)
RETOUR
FIN
Syntaxe
<Résultat> = HDécritTrigger(<Liste des fichiers de données HFSQL> , <Liste de fonctions HFSQL> , <Procédure WLangage> , <Type du trigger>)
<Résultat> : Booléen - Vrai si l'opération a été réalisée,
- Faux en cas de problème. La fonction HErreurInfo permet d'identifier l'erreur.
<Liste des fichiers de données HFSQL> : Chaîne de caractères Nom logique d'un ou de plusieurs fichiers de données HFSQL. Pour indiquer plusieurs noms de fichiers de données, séparez les noms des fichiers de données par une virgule (","). Pour utiliser tous les fichiers de données de l'analyse, ce paramètre doit être égal à "*". <Liste de fonctions HFSQL> : Chaîne de caractères Nom d'une ou de plusieurs fonctions HFSQL ou TableXXX sur lesquelles le trigger doit être mis en place. Pour indiquer plusieurs noms de fonctions, il faut séparer les noms des fonctions par une virgule (","). Il est possible de définir des triggers sur les fonctions suivantes : <Procédure WLangage> : Nom de procédure Nom de la procédure WLangage à exécuter lors du déclenchement du trigger sur la/les fonctions HFSQL spécifiées. <Type du trigger> : Constante de type Entier Indique le type du trigger. | | hTriggerAprès | La procédure est exécutée après la fonction HFSQL. | hTriggerAvant | La procédure est exécutée avant la fonction HFSQL. |
Remarques Trigger sur les fonctions de manipulation des tables Les fonctions de manipulation des tables ( TableAjoute, TableAjouteLigne, TableSupprime, TableModifie, etc.) utilisent implicitement les fonctions HFSQL suivantes : HAjoute, HSupprime et HModifie. Lors de l'utilisation d'une de ces fonctions de manipulation de table, si un trigger est défini pour la fonction HFSQL correspondante, le trigger est automatiquement déclenché. Variables permettant de gérer les triggers 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.NomFichier | Chaîne de caractères : Nom logique du fichier de données dont le trigger est activé. Attention : Selon le nom logique utilisé par l'application, la valeur de la variable H.NomFichier peut être différente (utilisation d'alias par exemple). Il est conseillé d'utiliser : - MonFichier.NomDécrit pour connaître le nom logique du fichier manipulé (sans prendre en compte les alias).
- MonFichier.NomPhysique pour connaître le nom physique du fichier manipulé.
| H.Action | Caractère initialisé à "A" pour un trigger Avant, "P" pour un trigger après. | H.FonctionTrigger | Chaî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é 2025H.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.AFaire | Pendant 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é.
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|