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

Posts les plus consultés de ce blog

Cours 1er - LE PROJET D'UN SIG - Partie II

Cours 1er - LES SOLUTIONS SIG - Parti III

Cours 1er - INTRODUCTION GENERALE AUX SIGs - Partie I