Académique Documents
Professionnel Documents
Culture Documents
4 TP Psdeclencheurs
4 TP Psdeclencheurs
doc 1
__________________________________________________________________________________________
Condition de réalisation du TP: les tables de la base de données GESCOM doivent être créées
conformément au modèle relationnel ci-dessous et toutes les données insérées.
Un certain nombre de règles de gestion ont pu être mises en place lors de la création des tables,
d'autres nécessitent l'élaboration de procédures stockées et/ou déclencheurs.
CATEGORIES(CodeCat, LibelleCat)
CodeCat : clé primaire
Table CATEGORIES: le code catégorie est un regroupement statistique interne codifié (valeurs
possibles 01 à 05)
E:\BTS_SIO\SLAM3\TP\TP_SQLServer\4 - TP_PSDéclencheurs.doc 2
__________________________________________________________________________________________
Table STOCKS: l'entreprise dispose de plusieurs dépôts en France qui peuvent distribuer les
matériels. La quantité d'articles par dépôt doit pouvoir être gérée, ainsi que des valeurs limites de
quantités stockées.
Le stock mini doit être inférieur ou égal au stock maxi.
La quantité en stock doit être comprise entre -100000 et + 100000.
Table COMMANDES: on peut appliquer une remise globale (ne peut dépasser 5%) sur la
commande.
EtatCde ne peut prendre que les valeurs : EC (en cours), LP (livrée partiellement), LI (livrée), SO
(soldée).
Table HISTOFAC: une commande dont toutes les factures sont réglées est considérée comme réglée.
EtatFac prend les valeurs : NR (non réglée), RP (réglée partiellement), RC (réglée complètement).
EXERCICE 1
Objectif: créer une procédure stockée (sans paramètres) qui permet d'afficher la liste des articles triés
sur la désignation avec référence article, désignation, prix HT, code catégorie et libellé catégorie.
EXERCICE 2
Objectif: créer une procédure stockée avec paramètre (code client), qui permet d'afficher les produits
commandés (date commande, référence article, désignation, quantité commandée) d'un client.
EXERCICE 3
Dans cet exercice vous allez mettre au point une procédure stockée, destinée au contrôle des
suppressions. Vous utiliserez les tables ARTICLES, STOCKS et LIGNESCOMMANDES pour
contrôler la validité d’une opération de suppression. En vous aidant de l'exemple donné en cours,
réalisez le code de la procédure stockée nommée SUPART, les objectifs suivants lui sont assignés :
Tester la procédure avec les valeurs suivantes, et noter les messages d'erreur
éventuels.
EXERCICE 4
Objectif: créer une procédure stockée qui permet de supprimer une commande et ses lignes de
commandes, après avoir contrôlé :
- que la commande existe,
- que la commande est bien soldée,
- que c’est une commande de l’année dernière
dans ces cas la suppression en cascade est autorisée, sinon envoyer des messages d'erreurs
appropriés et ne pas réaliser les suppressions
E:\BTS_SIO\SLAM3\TP\TP_SQLServer\4 - TP_PSDéclencheurs.doc 4
__________________________________________________________________________________________
Testez la procédure avec les différents cas. Pour cela ajoutez dans votre base de données
au moins une commande (état : soldé) et des lignes de commandes.
EXERCICE 5
Dans cet exercice vous allez créer un déclencheur qui va créer automatiquement une facture (une
ligne dans la table HISTOFAC pour les colonnes : DateFac, NoCde, EtatFac) lors d'une insertion de
commandes (table COMMANDES )
Le champ MontantHt de la table HISTOFAC sera mis à jour par un autre déclencheur, lors de la
saisie de lignes dans la table LIGNESCOMMANDES.
1. Pour cela lancer une requête d’insertion de commandes avec les données: commande n°12 du jour,
n° client 1, état commande = 'EC'
EXERCICE 2
Créez un déclencheur qui modifie le montant HT (initialisé à 0 par défaut) de la table HISTOFAC à
chaque insertion d'une ligne dans la table LIGNESCOMMANDES.
Testez le déclencheur.
1. Pour cela lancer une requête d’insertion d'une ligne de commandes de la dernière commande créée
n°12.
EXERCICE 3
Dans cet exercice vous allez créer un déclencheur qui sera activé lors des opérations d’insertion ou de
mise à jour sur la table CATEGORIES. Vous allez contrôler au moment de l’insertion ou de la mise à
jour que le libellé de la catégorie (ajouté ou modifié) n’existe pas déjà dans la table.
begin
print 'Ce libellé existe déjà avec un autre code catégorie!'
print 'L’’insertion ou la modification a été annulée'
/* Annulation de la mise à jour de la base */
rollback
end
else
begin
print 'L"insertion ou la modification a été réalisée avec succès'
end
Tester le déclencheur :
1. En modifiant une ligne de la table CATEGORIES avec doublon sur le libellé, puis sans
doublon.
2. Pour pouvoir ajouter de nouvelles catégories dans la table CATEGORIES, il faut refaire la
règle "reg_CodeCat" qui n'autorise que les codes catégorie 1 à 5.
1. Sélectionner la règle "reg_CodeCat", Propriétés, supprimer la colonnes associée
"CodeCat" de la table CATEGOIRES et de la table ARTICLES.
2. Supprimer la règle.
3. Recréer cette règle en autorisant les codes 1 à 10.
4. Associer cette règle à la colonne CodeCat des tables CATEGORIES et
ARTICLES.
3. Tester le déclencheur en insérant une ligne dans la table CATEGORIES en utilisant un libellé
déjà existant, puis en donnant un libellé non utilisé.
E:\BTS_SIO\SLAM3\TP\TP_SQLServer\4 - TP_PSDéclencheurs.doc 7
__________________________________________________________________________________________
EXERCICE 4
1/ Créer un nouvelle table DEPOT (IdDepot, NomDepot, RueDepot, CpDepot, VilleDepot), les deux
premiers champs sont obligatoires.
2/ Créer un déclencheur qui, lors d’une insertion d’une ligne dans la table STOCK, contrôle
l’existence du dépôt dans la table DEPOT. S’il n’existe pas, créer la ligne DEPOT avec un libellé ‘à
compléter’.
Tester le déclencheur .
EXERCICE 5
Objet de ce déclencheur?
EXERCICE 6
Créer le déclencheur qui n’autorise pas de doublons sur la désignation article lors d’une insertion ou
d’une modification de la colonne concernée dans la table ARTICLES.
Créer le déclencheur
Tester le déclencheur
E:\BTS_SIO\SLAM3\TP\TP_SQLServer\4 - TP_PSDéclencheurs.doc 8
__________________________________________________________________________________________
EXERCICE 7
Lors d’une insertion dans la table STOCKS ou d’une modification du stock minimum, celui-ci ne doit
pas être supérieur au stock maximum.
Créer le déclencheur
Tester le déclencheur
EXERCICE 8
Lors d’une nouvelle commande, la date de commande ne peut être en-dessous de 8 jours à la date du
jour(utiliser les fonctions sur date) et,
Créer le déclencheur
Tester le déclencheur
EXERCICE 9
Autoriser la suppression d’un client (et de tous ses objets) s’il n’a pas de commande, ou si les
commandes datent de plus de deux ans (utiliser les fonctions sur date).
Créer le déclencheur
Tester le déclencheur
E:\BTS_SIO\SLAM3\TP\TP_SQLServer\4 - TP_PSDéclencheurs.doc 9
__________________________________________________________________________________________
CORRIGE
Création :
EXERCICE 2
Créer une procédure stockée avec paramètre (code client), qui permet d'afficher les produits
commandés (date commande, référence article, désignation, quantité commandée) d'un client.
Création :
EXERCICE 3
Dans cet exercice vous allez mettre au point une procédure stockée, destinée au contrôle des
suppressions. Vous utiliserez les tables ARTICLES, STOCKS et LIGNESCOMMANDES pour
contrôler la validité d’une opération de suppression. En vous aidant de l'exemple donné en cours,
réalisez le code de la procédure stockée nommée SUPART, les objectifs suivants lui sont assignés :
- contrôler que l'article est référencé dans la table ARTICLES,
- contrôler que l'article n'existe plus en stock
- contrôler que l'article ne fasse pas l'objet d'une commande en cours ou livrée partiellement
- dans ces cas la suppression de l'article est autorisée, sinon envoyer des messages d'erreurs
appropriés et ne pas réaliser la suppression
E:\BTS_SIO\SLAM3\TP\TP_SQLServer\4 - TP_PSDéclencheurs.doc 10
__________________________________________________________________________________________
Création :
Exécution :
EXERCICE 4
Créer une procédure stockée qui permet de supprimer une commande et ses lignes de commandes,
après avoir contrôlé :
- que la commande existe,
- que la commande est bien soldée,
- que c’est une commande de l’année dernière
dans ces cas la suppression en cascade est autorisée, sinon envoyer des messages d'erreurs
appropriés et ne pas réaliser les suppressions
Création :
Dans cet exercice vous allez créer un déclencheur qui va créer automatiquement une facture (table
HISTOFAC) lors d'une insertion de commandes (table COMMANDES )
EXERCICE 2
Créez un déclencheur qui modifie le montant HT de la table HISTOFAC à chaque insertion d'une
ligne dans la table LIGNESCOMMANDES.
EXERCICE 4
1/ Créer un nouvelle table DEPOT (IdDepot, NomDepot, RueDepot, CpDepot, VilleDepot), les deux
premiers champs sont obligatoires.
2/ Créer un déclencheur qui, lors d’une insertion d’une ligne dans la table STOCK, contrôle
l’existence du dépôt dans la table DEPOT. S’il n’existe pas, créer la ligne DEPOT avec un libellé ‘à
compléter’.