TP Contraintes - Triggers



Documents pareils
Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Bases de Données relationnelles et leurs systèmes de Gestion

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Intégrité sémantique dans les bases de données relationnelles

Le Langage De Description De Données(LDD)

Intégrité des données

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Bases de données avancées

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Cours Bases de données 2ème année IUT

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Administration des bases de données. Jean-Yves Antoine

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Notes de cours : bases de données distribuées et repliquées

Auto-évaluation Oracle: cours de base

A QUOI SERVENT LES BASES DE DONNÉES?

Le langage SQL (première partie) c Olivier Caron

Cours Bases de données 2ème année IUT

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

A QUOI SERVENT LES BASES DE DONNÉES?

Gestion de base de données

Introduction au PL/SQL Oracle. Alexandre Meslé

Bases de Données Avancées PL/SQL

Historisation des données

//////////////////////////////////////////////////////////////////// Administration bases de données

Devoir Data WareHouse

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Langage SQL : créer et interroger une base

Partie 0 : Gestion des tablespace et des utilisateurs... 3

CATALOGUE FORMATIONS DOMAINE Bases de données

Bases de données relationnelles

Création et Gestion des tables

Olivier Mondet

CREATION WEB DYNAMIQUE

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Présentation du PL/SQL

BASES DE DONNEES TP POSTGRESQL

Bases de données et sites WEB

Pratique et administration des systèmes

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Le Langage SQL version Oracle

TP Programmation Java / JDBC / Oracle

CHAPITRE 1 ARCHITECTURE

TP3 : Creation de tables 1 seance

Compétences Business Objects

I. MySQL : Serveur et SGBD

Pour les débutants. langage de définition des données

Data Tier Application avec SQL Server 2008 R2

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

SQL Historique

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Introduction au Système de Gestion de Base de Données et aux Base de Données

Corrigés détaillés des exercices

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

INTEGRITE ET BD ACTIVES

Cours Bases de données 2ème année IUT

INSIA Bases de données ORACLE Installation SQL*Plus SQL-Developer

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Département Génie Informatique

Bases de données et sites WEB Licence d informatique LI345

Encryptions, compression et partitionnement des données

AGRÉGATION «ÉCONOMIE ET GESTION»

Les déclencheurs. Version 1.0. Grégory CASANOVA

I4 : Bases de Données

TP11 - Administration/Tuning

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

I/ Présentation. On considère une BD CIRQUE dont le schema conceptuel : PERSONNEL _CIRQUE (NOM, ROLE) ;

1 Position du problème

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Structure fonctionnelle d un SGBD

Chapitre 10. Architectures des systèmes de gestion de bases de données

Bases de Données Réparties

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Du 10 Fév. au 14 Mars 2014

Administration des bases de données

Bases de Données Avancées

1 Introduction et installation

LE LANGAGE SQL2 1. INTRODUCTION

1/ Présentation de SQL Server :

1. Base de données SQLite

Cours de SQL SERVER 2005 SQL SERVER 2005

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Bases de Données Avancées

Optimisation SQL. Quelques règles de bases

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Les BASES de DONNEES dans WampServer

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

TP Administration Oracle

SQL Server 2000, Analysis Services et DTS

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

FileMaker 13. Guide de référence SQL

Transcription:

TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution de commandes spécifiques et de commandes SQL. Pour vous connecter sqlplus /@venus/licence Remarque : Quelques commandes SQL*Plus : SET pause ON/OFF défilement page par page SET LINESIZE n fixe le nbre de caractéres de la ligne SET PAGESIZE n fixe le nbre de lignes par page DESC nomtable description de la table L administration d une base de données sous Oracle se fait à l aide d une base de données appelée métabase (on parle aussi de dictionnaire de données). Vous pourrez consulter les éléments de cette métabase : USER tables, USER tab columns, USER constraints. 2. Entreprise Vous disposez d un fichier Creation.sql contenant un script de création d une base de données Entreprise que vous sauvegarderez dans un répertoire de travail. Le schéma initial comporte les schémas relationnels suivants : EMP (nom, num, fonction, n sup, embauche, salaire, comm, n dept) un employé de numéro num posséde un nom et occupe l emploi fonction, cet employé a aussi un responsable identifié par le numéro n sup, une date d embauche embauche, un salaire, une commission comm et un département de rattachement n dept DEPT(n dept, nom,lieu) un Département de numéro n dept, de nom nom est situé à lieu Créer la base (en exécutant le script par la commande start ou @) et vérifier le contenu des tables créées. 1

GLIN605 Info 2011-2012 2 2.1 Requêtes Vous effectuerez en algèbre relationnelle (lorsque cela est possible) puis en SQL les requêtes suivantes : Liste des nom d employés ayant une commission, classée par commission décroissante. Donner le nom des employés classés par fonction, et pour chaque fonction classés par salaire décroissant. Nom des personnes embauchées depuis le 1 janvier 2001. Donner pour chaque employé son nom et son lieu de travail. Donner pour chaque employé le nom de son supérieur hiérarchique. Quels sont les employés gagnant plus que tous les employés du département 30. Quels sont les employés ne travaillant pas dans le même département que leur supérieur hiérarchique. Donner le nom, la fonction et le salaire de l employé (ou des employés) ayant le salaire le plus élevé. Total des salaires pour chaque département. Quel est le département ayant le plus d employés? Nom des départements ayant des employés effectuant toutes les fonctions. 2.2 Définition des Contraintes Lorsque certaines contraintes sont introduites dans la conception du schéma, le systéme leur donne un nom interne, vérifiez le en consultant la table du dictionnaire de données USER constraints. Ici le schéma initial ne comporte aucune contrainte et le concepteur constate qu il a omis de déclarer des contraintes d intégrité essentielles. Il s agit donc de mettre en œuvre ces contraintes en les créant et en les nommant (consulter l aide ALTER et ADD CONSTRAINT). Sur la table DEPT rajouter la contrainte dept pk définissant n dept comme clé primaire. Sur la table EMP rajouter les contraintes suivantes : 1. emp pk définissant num comme clé primaire, 2. nom u définissant nom comme nom unique, 3. responsable définissant n sup comme Foreign key référençant num (CI intra table) 4. dept définissant n dept comme Foreign key référençant n dept de la table DEPT (CI inter table) 5. commission définissant un contrôle tel que seuls les employés dont la fonction est commercial aient une commission comm non nulle (null).

GLIN605 Info 2011-2012 3 2.3 Vérification Vérifier que les contraintes ont été créées. Pour cela consulter la table de la métabase USER constraints. Remarquer que la valeur de de constraint type est C, P, U ou R suivant que la contrainte est respectivement de type CHECK, PRIMARY KET, UNIQUE, FOREIGN KEY. Vérifier que ces contraintes sont actives en essayant de les transgresser en réalisant des insertions ou des effacements (donner un exemple de transgression). Remarque : Tout ordre sql s effectue en fait au sein d une transaction. Toute transaction peut être validée par l ordre commit ou annulée par l ordre rollback. 2.4 Désactiver/Activer des Contraintes Dans certains cas, l administrateur ou l utilisateur qui a défini une contrainte peut souhaiter, pour effectuer des mises à jour qui la transgresse, désactiver momentanément cette contrainte. 1. consulter l aide DISABLE/ENABLE ; 2. désactiver la contrainte commission ; 3. insérer des n-uplets dans EMP transgressant la contrainte commission ; 4. essayer de rétablir la contrainte. Conclusion? ; 5. détecter les n-uplets qui provoquent l erreur afin de pouvoir les supprimer et rétablir la contrainte. Pour cela, créer une table que vous nommez par exemple REJETS : CREATE TABLE REJETS (ROW_ID ROWID, OWNER VARCHAR2(30), TABLE_NAME VARCHAR2(30), CONSTRAINT VARCHAR2(30)); Réactiver la contrainte commission en demandant la sauvegarde des n- uplets erreurs dans la table REJETS par la commande alter table EMP enable constraint commission exceptions into REJETS Vérifier le contenu de la table REJETS, puis supprimer de la table EMP les n-uplets erreurs. Rétablissez enfin la contrainte commission 2.5 Suppression des contraintes Supprimer les contraintes de la table EMP.

GLIN605 Info 2011-2012 4 3. PL/SQL et triggers PL/SQL est le langage procédural d Oracle et permet de mélanger SQL et langage procédural dans un même traitement. Les traitements PL/SQL peuvent être exécutés, soit directement par Oracle (blocs anonymes), soit à partir d objets de la base (procédures stockées et Packages). Nous allons successivement découvrir les notions classiques de programmes, procédures, fonctions...puis la notion de trigger de base de données (alerteurs ou déclencheurs). Un bloc PL/SQL peut Ítre considéré comme un programme. Consulter l aide. Vous pouvez donc créer des fichiers comportant un bloc PL/SQL qui seront ensuite chargés et exécutés. Syntaxe d un bloc DECLARE -- declarations des variables, constantes, exceptions et curseurs BEGIN [nom bloc] -- statements (instructions SQL, PL/SQL) EXCEPTION -- handlers traitement des erreurs END [nom bloc]; 3.1 Remarques commentaire sur la ligne /*... */ commentaires plusieurs lignes Tout bloc PL/SQL doit se terminer par une ligne ne comportant q un. (on peut aussi utiliser / mais la vérification du code est alors suivie d une exécution immédiate). La compilation des blocs se fait lors de son chargement (@nomfichier ou STARTnomfichier). Le texte de tout bloc PL/SQL est visible par la commande LIST Si des erreurs sont détectées vous pouvez les visualiser par la commande SHOW ERRORS Consulter le dictionnaire des données. USER_Objects Plusieurs packages prédéfinis existent, vous utiliserez le DBMS OUTPUT package qui fournit les méthodes d écriture des diverses variables sur le périphérique de sortie standard. PROCEDURE PUT(A VARCHAR2) PROCEDURE PUT(A NUMBER)

GLIN605 Info 2011-2012 5 PROCEDURE PUT(A DATE) PROCEDURE PUT_LINE(A VARCHAR2) PROCEDURE PUT_LINE(A NUMBER) PROCEDURE PUT_LINE(A DATE) avec possibilité de concaténation entre diverses variables par Attention les procédures du package DBMS OUTPUT ne fonctionnent avec effet visible qu après la commande d environnement SET SERVEROUTPUT ON 3.2 Triggers Un déclencheur ou trigger est un bloc PL/SQL associé à une table et qui s exécute lorsqu une instruction (Insert, Update, Delete) sera demandée sur la table. CREATE [OR REPLACE] TRIGGER [schema.]trigger {BEFORE AFTER} {DELETE INSERT UPDATE [OF column [, column]...]} [OR {DELETE INSERT UPDATE [OF column [, column]...]}]... ON [schema.]table [ [REFERENCING { OLD [AS] old [NEW [AS] new] NEW [AS] new [OLD [AS] old] } ] FOR EACH ROW [WHEN (condition)] ] pl/sql_block Il s agit donc de mettre en œuvre quelques triggers afin d assurer divers contrôles. Il est conseillé d écrire le code des triggers dans un fichier que vous créerez avec l éditeur de votre choix. a) Création d un alerteur On souhaite avoir un message Opération terminée après toute insertion, modification ou suppression effectuée sur la table EMP. Créer le trigger alert. b) Création d un déclencheur (sécurité) On souhaite que toute mise à jour de la table EMP ne soit effectuée que durant les jours ouvrables, si la mise à jour a lieu le samedi ou le dimanche on déclenche une exception après l opération. Créer le trigger ouvrable. Utiliser TO CHAR qui permet de formater les dates et RAISE APPLICATION ERROR (consulter Help) NB Pour le tester exceptionnellement considérer que le jour de votre TP n est pas un jour ouvrable.

GLIN605 Info 2011-2012 6 c) Création d un déclencheur (contrôle de mise à jour) On suppose qu au sein de l entreprise chaque fois qu un employé change de travail on lui accorde en préalable (ce n est guère réaliste mais...) une augmentation de salaire de 50 Euros. Créer le trigger change fonction qui réalise ceci pour tout n uplet concerné et ceci avant la modification de travail. d) Création d un déclencheur (contrôle de mise à jour) Lors de toute insertion ou de toute modification concernant le salaire (sal) d un employé occupant un emploi autre que directeur on veut vérifier que le salaire est compris entre 10000 et 50000, si ceci n est pas vérifié on envoie un message approprié (salaire trop bas ou trop haut). Créer le trigger verif sal qui réalise ceci pour tout n uplet concerné après la modification de travail. 3.3 Vérification Vérifier la création des triggers. Pour cela consulter la vue du dictionnaire de données USER_triggers Vérifier que ces triggers sont actifs en essayant des commandes SQL. 3.4 Désactiver/Activer des triggers Dans certains cas, l administrateur ou l utilisateur qui a défini un trigger peut souhaiter le désactiver momentanément. a) Consulter l aide DISABLE/ENABLE. b) Désactiver le trigger alert. c) Réactiver le. 3.5 Suppression des triggers Supprimer les triggers de la table EMP.