Trigger

Vous êtes ici : >> SQL / Trigger (Déclencheurs)
Temps d'étude : 30min. Niveau : Moyen.
Tags : Base de données, cours sql, Trigger (Déclencheurs)
Fichier(s) utile(s) pour ce cours : employes.sql

Trigger (Déclencheurs)

Un trigger (déclencheurs) permet d'isoler un morceau de code permettant de réaliser un traitement.
Contrairement aux fonctions et procédures stockées ce n'est pas nous qui l'exécuterons, il sera prévu pour s'exécuter seul, nous pourrons choisir l'action sur lequel le trigger s'exécutera.

Prenons un exemple pour avoir l'occasion d'écrire un trigger : Créons une table employes_corbeille qui sera la copie exacte en terme de structure (colonnes / champs) de la table employés (sans aucun enregistrement, à vide).

Nous allons faire en sorte d'enregistrer un employé dans employes_corbeille à chaque fois qu'il est supprimé de la table employés (sauf pour les commerciaux que nous ne garderons pas).

SQL / Trigger
	DELIMITER |
	DROP TRIGGER IF EXISTS t_employes_corbeille |
	CREATE TRIGGER t_employes_corbeille AFTER DELETE ON employes
	FOR EACH ROW
	BEGIN
	 IF OLD.service != 'commercial' then
		INSERT INTO employes_corbeille(id_employes, prenom, nom, sexe, service, date_embauche, salaire, id_secteur) VALUES (OLD.id_employes, OLD.prenom, OLD.nom, OLD.sexe, OLD.service, OLD.date_embauche, OLD.salaire, OLD.id_secteur);
	 END IF;
	END |
Comme vous pouvez le voir dans le cadre de ce trigger, nous avons précisé l'action AFTER DELETE ON employes

Ca veut dire qu'après chaque requête DELETE sur la table employés, ce trigger s'exécutera.

Nous réalisons une condition qui évite les commerciaux (employé du service commercial) pour insérer seulement tous les autres employés dans la table employes_corbeille.

Il ne vous reste plus qu'à faire le test en supprimant un employé de la table employés.
A la suite de cette action, vous devriez remarquer la présence de cet employé dans la table employes_corbeille (sauf s'il s'agit d'un commercial, il ne sera pas conservé).