4D v16.3

Evenement trigger

Accueil

 
4D v16.3
Evenement trigger

Evenement trigger 


 

Evenement trigger -> Résultat 
Paramètre Type   Description
Résultat  Entier long in 0=Hors de tout événement de trigger, 1=Sauvegarde d'un nouvel enregistrement, 2=Sauvegarde d'un enregistrement existant, 3=Suppression d'un enregistrement

La commande Evenement trigger est appelée dans un trigger et renvoie une valeur numérique qui indique le type de l'événement de la base, ou la raison pour laquelle le trigger a été appelé. 4D fournit les constantes prédéfinies suivantes, placées dans le thème Evénements trigger :

Constante Type Valeur
Sur sauvegarde enregistrement Entier long 2
Sur sauvegarde nouvel enreg Entier long 1
Sur suppression enregistrement Entier long 3

Si, dans un trigger, vous effectuez des opérations de base de données sur plusieurs enregistrements (par exemple mise à jour de plusieurs enregistrements dans la table [Produits] et ajout d'enregistrement dans la table [Factures]), vous pouvez rencontrer des situations (comme des enregistrements verrouillés) qui empêchent le trigger d'exécuter correctement les opérations pour lesquelles il est appelé. Il vous faut alors stopper les actions de la base et retourner une erreur pour que le process appelant sache que la requête n'a pu être exécutée. Ce process doit également être en mesure d'annuler les opérations non exécutées. Autrement dit, lorsqu'une telle situation se produit, vous avez besoin de savoir dans le trigger si vous êtes en transaction avant même d'essayer de faire quoi que ce soit. Pour cela, utilisez la fonction Transaction en cours.

Dans 4D, il n'y a pas de limite, à part la mémoire disponible, aux appels de triggers en cascade. Pour optimiser l'exécution d'un trigger, vous pouvez écrire le code de vos triggers non seulement en fonction de l'événement de la base mais aussi du niveau de l'appel lorsque les triggers sont appelés en cascade. Par exemple, pendant l'événement trigger Sur suppression enregistrement pour la table [Factures], vous pouvez ne pas effectuer la mise à jour du champ [Clients]Ventes si la suppression de l'enregistrement de la table [Factures] fait partie de la suppression en cascade des factures liées à l'enregistrement dans la table [Clients] que vous êtes en train de supprimer. Pour cela, utilisez les routines Niveau du trigger et PROPRIETES DU TRIGGER.

Exemple  

Utilisez la fonction Evenement trigger pour structurer vos triggers comme ci-dessous :

  // Un trigger de la table [toute table]
 C_ENTIER LONG($0)
 $0:=0 // S'assurer que la requête de la base sera accordée
 Au cas ou
    :(Evenement trigger=Sur sauvegarde nouvel enreg)
  // Exécuter les actions appropriées pour la sauvegarde d'un nouvel enregistrement
    :(Evenement trigger=Sur sauvegarde enregistrement)
  // Exécuter les actions appropriées pour la sauvegarde d'un enregistrement existant
    :(Evenement trigger=Sur suppression enregistrement)
  // Exécuter les actions appropriées pour la suppression d'un enregistrement
 Fin de cas



Voir aussi  

Niveau du trigger
Présentation des triggers
PROPRIETES DU TRIGGER
Transaction en cours

 
PROPRIÉTÉS 

Produit : 4D
Thème : Triggers
Numéro : 369
Nom intl. : Trigger event

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
HISTORIQUE 

Modifié : 4D v11 SQL Release 2
Renommé : 4D v13

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)