TP3 pl/sql
PARTIE 1 : Les exceptions
Ecrire les BLOCS PL/SQL suivant :
1. Un bloc anonyme permettant de créer les 2 tables suivantes :
2. Une procédure stockée « proc_insertion_CHANTIER » permettant d’ajouter un
nouveau chantier. Cette procédure doit vérifier que la référence est UNIQUE.
(NB : le champ « nbrOuvrierAffectes » reste NULL). Utilisez cette procédure afin
d’insérer 3 chantiers.
3. Une procédure stockée « proc_insertion_OUVRIER » permettant d’ajouter un
nouvel ouvrier. Cette procédure doit vérifier que :
● La matricule est UNIQUE.
● La référence du chantier existe.
● Le prix du jour pour chacun des ouvriers est au minimum 10 dinars.
Utilisez cette procédure afin d’insérer 3 ouvriers.
PARTIE 2 : les triggers
1. Créer un trigger « trig_messages » permettant d’afficher avant et après chaque
insertion dans la table OUVRIERS respectivement les messages suivants :
«Début d’insertion » et « Fin d’insertion »
2. Créer un trigger « trig_messages_specif » permettant d’afficher avant chaque
insertion, mise à jour ou suppression dans la table CHANTIERS respectivement
les messages suivants : « Insertion le 01/04/2017 à 9H » OU « Modification le
01/04/2017 à 9H » ou « Suppression le 01/04/2017 à 9H », indiquant l’action
effectuée, l’heure et la date.
3. Créer un trigger « Trig_nbrOuvriers » permettant de mettre à jour la colonne
«NbrOuvriersAffectes » après chaque nouvel affectation ou retrait d’un ouvrier.
4. Créer une table d’historique nommée HISTORIQUES permettant de faire le
TP3 pl/sql
traçage des différentes requêtes LMD faites sur la table CHANTIERS.
Voici la structure logique de la table :
Nom colonne Type de données Description
Type_requete Varchar2(15) Ce champ permet de
spécifier le type
d’opération LMD
effectué : INSERT,
UPDATE or DELETE.
Date_operation Date Ce champ enregistre la
date de l’opération.
Heure Number Ce champ indique
l’heure de l’opération en
respectant ce format HH
: MIN
Utilisateur Varchar2(20) Ce champ enregistre le
nom de l’utilisateur ayant
effectué cette opération.
5. Créer un trigger nommé « Trig_historique » permettant d’alimenter la table
HISTORIQUES après toutes opérations LMD effectuée sur la table
CHANTIERS.
6. Créer un trigger nommé « Trig_control » permettant d’interdire toute opération
LMD sur la table OUVRIERS pendant les weekends.