SQL - Les déclencheurs
Définition : En programmation procédurale, un déclencheur (trigger en anglais) est un dispositif logiciel qui provoque un
traitement particulier en fonction d'événements prédéfinis. Par extension,
c'est l'événement lui-même qui est qualifié de déclencheur.
Déclencheur simple : comment
créer un champ auto-incrémente ?
Firebird ne dispose pas d’un
champ auto-incrémente comme d’autres SGBDR. Cette contrainte peut-être surmonté,
par la programmation d’un déclencheur et d’un générateur.
Supposons qu’on a la table
suivante avec la définition suivante :
Create table t1
(
id integer not null,
field1 varchar(20) not null
);
Pour rendre le champ id
auto-incrémentable on a besoin de créer un déclencheur de type BEFORT INSERT
qui se charge d’auto-incrémenter la valeur de id à chaque nouvel insertion d’un
enregistrement. Mais avant de pouvoir créer le déclencheur on doit créer un
générateur afin d’initialiser la valeur de démarrage.
CREATE GENERATOR gen_t1_id;
SET GENERATOR gen_t1_id TO 0;
Donc, le premier enregistrement
aura, dans le champ id, la valeur 0. Maintenant nous pouvons créer le
déclencheur :
set term !! ;
CREATE TRIGGER T1_BI FOR T1
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
if (NEW.ID is NULL) then NEW.ID = GEN_ID(GEN_T1_ID, 1);
END!!
set term ; !!
Les déclencheurs rendent de gros
service, ils permettent de faire une grande partie du traitement et évitent de
coder ces traitements dans le langage haut niveau qui ne fait qu’encapsuler et
réaliser l’application métier sans se soucier de la façon de réaction du SGBDR.
Commentaires