En complément des manipulations expliquées dans la vidéo, il faut noter que :
Cette appellation d’événement MOTEUR apporte une précision importante : les triggers sont exécutés sur le moteur de la base de données :
En monoposte, il s’agit bien du programme 4D qui contient à la fois le moteur de base de données, le moteur de rendu (affichages, etc.).
En mode client/serveur (Serveur SQL ou serveur Web), les données sont stockées sur le serveur et envoyées aux postes clients par le moteur de 4DServer. Dans ce cas, les triggers sont exécutés sur le serveur et non plus en local sur les postes clients.
D’une manière générale, prenez l’habitude de créer des méthodes projet qui réalisent vos traitements, calculs, etc. et appelez ces méthodes “génériques” depuis les méthodes spécifiques telles que les triggers.
Nous avons vu comment passer des paramètres, c’est beaucoup plus facile à maintenir et vous gagnerez un temps considérable tant en développement qu’en correction de bogues. Votre code sera également plus concis, fiable et lisible.
On peut exécuter des triggers en cascade. Dans ce cas, 4D dispose de commandes permettant de connaître les propriétés du trigger et le niveau dans la cascade.
Un trigger peut également servir à “accepter” ou “rejeter” la tentative d’opération sur l’enregistrement.
C’est un moyen qui vous permet de garantir l’intégrité de votre base de données quelle que soit la manière dont les informations sont traitées :
SQL
plug-in
saisie
import
Web
Sachant qu’un trigger bloque le reste des traitements durant son exécution, les principes généraux à respecter dans une méthode trigger sont :
dans cette vidéo nous allons apprendre à paramétrer les événements moteur et les prendre en compte dans la programmation. Un trigger est en fait une méthode table qui sert à contrôler les actions effectuées par le moteur de la base sur les données :
création
modification
suppression
À ce titre, un trigger est une méthode comme une autre, c’est juste son contexte d’exécution qui change.
A l’instar des événements formulaires, les événements moteurs doivent être cochés pour que 4D passe la main au trigger à exécuter.
C’est dans l’Inspecteur de tables que nous pouvons activer tel ou tel événement moteur.
En bas à droite se trouve le bouton "Editer" qui permet de créer la méthode à exécuter lors de la survenue des événements cochés.
La méthode est généralement structurée de la manière suivante :
$evt:=Trigger event`quel est le numéro de l'événement en cours d'exécution par le moteur de la BDD Case of
:($evt=On Saving New Record Event) `on sauvegarde un nouvel enregistrement
Contrairement à une méthode formulaire qui n’est exécutée que lorsqu’on est dans le cadre d’un affichage (ou une impression), un trigger est exécuté quelle que soit la manière dont on accède aux enregistrements :
programmation
import/export
SQL
Web
...
Le trigger a l’avantage d’être un point de passage obligé.
Ajoutons un champ Date_Derniere_Modif dans la table Intervention
rendons-le visible sur le formulaire
et valorisons-le lors de l'enregistrement d'une fiche :
[Interventions]Date_derniere_modif:=Current date
Bien évidemment cette dernière modification sera valable également lors de la création de l'enregistrement.
Testons-le en effectuant une modification :
si nous changeons la date d'intervention
en enregistrant et que nous revenons ici, la date de modif a bien été valorisée