DATA - Data Governance > Architecture et outils > Générer des scripts SQL > Définir les triggers pour une base de données
Définir les triggers pour une base de données
Un trigger est un traitement enregistré dans une base de données et qui est déclenché automatiquement lors de la mise à jour d'une table.
Créer un trigger
Les triggers se définissent au niveau des tables d'une base de données.
*Il faut noter que les triggers sont définis en fonction du SGBD cible; c'est pourquoi il est important de contrôler, avant de créer les triggers, que le SGBD cible est correct.
Si le SGBD cible est modifié a posteriori, les triggers créés pour ce SGBD ne sont pas supprimés, mais ils sont inactivés.
Pour créer un trigger dans HOPEX Data Governance :
1. Cliquez sur le menu de navigation puis sur Architecture > Vue hiérarchique.
*Dans HOPEX Data Architecture, cliquez sur le menu de navigation puis sur Architecture de données > Données physiques.
2. Dépliez le dossier de la base de données puis de la table concernées.
3. Faites un clic droit sur le dossier Trigger et sélectionnez Nouveau > Trigger.
La fenêtre de création d'un trigger apparaît.
4. Indiquez le nom du trigger et les actions déclenchées. Voir Déclenchement du trigger.
Déclenchement du trigger
Le trigger peut se déclencher suite à l'une des trois actions suivantes :
Lors de la Création d'une ligne dans la table
Lors de la Suppression d'une ligne
Lors d'une Modification de la table ou d'une colonne en particulier
De plus, vous pouvez choisir de le lancer Avant ou Après ces actions, sur l'ensemble de la table ou sur chaque ligne concernée.
Références
Les champs «Référence des anciens tuples» et «Référence des nouveaux tuples» créent dans le code du trigger des références aux lignes insérées, supprimées ou mises à jour.
Le nom indiqué dans le champ "Référence des anciens tuples" correspond à la ligne qui existait avant la mise à jour.
Le nom du champ «Référence des nouveaux tuples» fait référence à la ligne après la mise à jour.
En cas d'insertion, seule la nouvelle ligne est valide.
En cas de suppression, seule l'ancienne est valide.
Définition SQL
L'option Définition SQL, dans les propriétés du trigger, présente le code du trigger.
Pour afficher le code du trigger :
1. Faites un clic droit sur le trigger et sélectionnez Propriétés.
La fenêtre des propriétés du trigger apparaît.
2. Cliquez sur la liste déroulante puis sur Textes.
3. Cliquez sur l'onglet Définition SQL.
Intégrité référentielle
L'intégrité référentielle est gérée par la création des clés étrangères sur une base de données.
Elle regroupe l'ensemble des contraintes permettant de contrôler l'incidence d'une modification d'une table dans les tables qui lui sont liées.
Il se peut que l'existence de clés dans certains SGBD n'implique pas un contrôle systématique. Il se peut également que vous vouliez personnaliser les contraintes à appliquer sur une table en particulier.
C'est pourquoi vous pouvez générer dans des triggers le code qui correspond à la gestion de l'intégrité référentielle.
Pour générer l'intégrité référentielle d'une table :
1. Faites un clic droit sur la base de données concernée et sélectionnez Initialisation de trigger.
La fenêtre de génération des triggers apparaît.
2. Sélectionnez une des options de génération :
Générer la cible par type
Générer la cible par intégrité du référentiel
3. Sélectionnez les tables de la base de données.
4. Cliquez sur Suivant.
Les triggers sont automatiquement créés pour les tables sélectionnées.
Une fois la génération terminée, les triggers apparaissent sous le dossier Trigger disponible sous chaque table. Il existe trois type de trigger :
Un trigger de mise à jour (U_ suivi du nom de la table), qui permet de spécifier l'action à réaliser en cas de modification d'une ligne de la table faisant partie de la clé étrangère.
Un trigger de suppression (D_), qui spécifie l'action à réaliser en cas de suppression.
Un trigger d'insertion (I_), qui spécifie l'action à réaliser en cas d'insertion.
Ces triggers ne sont valables que pour un SGBD cible. Lorsque vous changez de SGBD, vous devez regénérér les triggers.