FAQ Interbase/FirebirdConsultez toutes les FAQ

Nombre d'auteurs : 3, nombre de questions : 56, dernière mise à jour : 8 octobre 2006  Ajouter une question

 

Cette faq a été réalisée à partir des questions fréquement posées sur les forums InterBase et Firebird de et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci

Sur ce, nous vous souhaitons une bonne lecture.
L'équipe Firebird-Interbase de Developpez.com


SommaireLes déclencheurs (Triggers) (4)
précédent sommaire suivant
 

Un trigger est un bout de programme sur le serveur qui est automatiquement invoqué lorsqu'un enregistrement est inséré, mis à jour ou effacé. Les triggers sont liés à une table ou une vue. Ils permettent d'effectuer de petites opérations telles que vérification de données, modification, etc...

Il existe six événements : "Before Insert", "After Insert", "Before Update", "After Update", "Before Delete", "After Delete".

Le "Before Insert" est l'événement envoyé avant une insertion dans une table. Il est très utilisé pour les vérifications des données et surtout lorsqu'on utilise un générateur sur une donnée de la table.

Le "After Insert" est l'événement envoyé après qu'une insertion se soit bien passée dans une table. Cet événement peut donc être utilisé pour envoyer un événement vers les clients ou pour faire une insertion dans une table d'historisation ou ...

Le "Before Update", "Before Delete" est l'événement envoyé avant respectivement une mise à jour ou un effacement d'un enregistrement de la table.

Le "After Update", "After Delete" est l'événement envoyé après respectivement une mise à jour ou un effacement d'un enregistrement de la table.

Il peut y avoir plusieurs triggers pour une même table et même plusieurs sur un même évènement. Dans ce cas là on peut préciser un ordre d'exécution grâce au paramètre du trigger "POSITION".

Dans un trigger on a accès directement aux colonnes de la table/vue au travers de variables de contexte. Suivant le type d'événement sur lequel se trouve attaché le trigger il y a un ou deux contextes. Le contexte de variable NEW contient les nouvelles valeurs des colonnes (ex: NEW.MaColonne). Ce contexte est accessible uniquement pour les types de trigger Update et Insert. Le contexte de variable OLD contient les anciennes valeurs des colonnes (ex: OLD.MaColonne). Ce contexte est accessible uniquement pour les types de trigger Update et Delete. C'est ainsi que par exemple on va pouvoir interdire les augmentations de salaires supérieures à 25% dans un trigger before update

Code SQL : Sélectionner tout
1
2
if (NEW.SALAIRE/OLD.SALAIRE >1.25) then EXCEPTION  
AUGMENTATION_TROP_GROSSE;

Mis à jour le 20 juin 2005 Barbibulle

Par exemple pour limiter les augmentations de salaire sur la table EMPLOYES à maximum 25% :

Code SQL : Sélectionner tout
1
2
3
4
5
6
7
8
9
  
SET TERM ^ ; 
CREATE TRIGGER NOM_DU_TRIGGER_EMPLOYES_BU0 FOR EMPLOYES 
ACTIVE BEFORE UPDATE POSITION 0 
AS 
begin 
  if (NEW.SALAIRE/OLD.SALAIRE >1.25) then NEW.SALAIRE=OLD.SALAIRE*1.25; 
end 
SET TERM ; ^

Mis à jour le 20 juin 2005 Barbibulle

La suppression définitive d'un trigger se fait simplement comme ceci :

Code SQL : Sélectionner tout
1
2
  
DROP TRIGGER NOM_DU_TRIGGER_EMPLOYES_BU0;

Mis à jour le 20 juin 2005 Barbibulle

On peut rendre inactif un trigger sans devoir le supprimer de la manière suivante :

Code SQL : Sélectionner tout
1
2
  
ALTER TRIGGER NOM_DU_TRIGGER_EMPLOYES_BU0 INACTIVE;
Pour le réactiver :

Code SQL : Sélectionner tout
1
2
  
ALTER TRIGGER NOM_DU_TRIGGER_EMPLOYES_BU0 ACTIVE;

Mis à jour le 20 juin 2005 Barbibulle

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2019 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.