Vues Déclencheurs et procédures en Postgres. Maroua Bouzid Département Informatique Université de Caen

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

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

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

TP Contraintes - Triggers

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

Bases de données avancées

Intégrité des données

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

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

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

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

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

Le langage procédural PL-PGSQL

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Le Langage De Description De Données(LDD)

Bases de Données Avancées PL/SQL

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

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

Auto-évaluation Oracle: cours de base

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

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

Gestion de base de données

Introduction au PL/SQL Oracle. Alexandre Meslé

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

Corrigés détaillés des exercices

BASES DE DONNEES TP POSTGRESQL

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

Mysql. Les requêtes préparées Prepared statements

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

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

TP3 : Creation de tables 1 seance

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

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

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

Les bases de données

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

Chapitre 5 : Les procédures stockées PL/SQL

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Langage SQL : créer et interroger une base

A QUOI SERVENT LES BASES DE DONNÉES?

Administration des bases de données

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

Devoir Data WareHouse

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

Gestion des utilisateurs et de leurs droits

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

CREATION WEB DYNAMIQUE

Bases de données relationnelles

1. Base de données SQLite

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

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

CATALOGUE FORMATIONS DOMAINE Bases de données

Paginer les données côté serveur, mettre en cache côté client

Bases de données et sites WEB

Olivier Mondet

Création et Gestion des tables

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

INTEGRITE ET BD ACTIVES

PHP 5. La base de données MySql. A. Belaïd 1

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Encryptions, compression et partitionnement des données

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

APIs de table pour SQL Server

OpenPaaS Le réseau social d'entreprise

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

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

Algorithmique & programmation

SQL Historique

Django et PostgreSQL sous la charge

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Arbres binaires de recherche

Historisation des données

Bases de Données Réparties

Présentation Windows Azure Hadoop Big Data - BI

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

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

[BASE DE DONNEES MULTIMEDIA]

Hala Skaf-Molli. Nancy-Université 14 mai 2007

Compétences Business Objects

AGRÉGATION «ÉCONOMIE ET GESTION»

Attaques applicatives

Gestion de stock pour un magasin

Java Licence Professionnelle CISII,

Configurer la supervision pour une base MS SQL Server Viadéis Services

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Les bases fondamentales du langage Transact SQL

Support de cours «SGBD»

Administration des bases de données relationnelles Part I

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Introduction aux Bases de Données 2004/2005

Once the installation is complete, you can delete the temporary Zip files..

Les BASES de DONNEES dans WampServer

Partie II Cours 3 (suite) : Sécurité de bases de données

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

MySQL / SQL EXEMPLES

I4 : Bases de Données

Transcription:

Vues Déclencheurs et procédures en Postgres Maroua Bouzid Département Informatique Université de Caen

LES VUES

Définition Une vue est une table virtuelle au sens où ses instances n existent pas physiquement. Une vue est une table logique pointant sur une table physique Un utilisateur peut suivre l évolution d une table physique via une vue.

Création d une vue CREATE or REPLACE view as <requête> CREATE VIEW nom [ ( nom_colonne [,...] ) ] AS requête [ WITH [ CASCADED LOCAL ] CHECK OPTION ] check option : les conditions de la création doivent rester respectées lors des INSERT, UPDATE Local ; que de la vue Cascade : sur toutes les vues issues de cette vue

Exemples CREATE VIEW comedies AS SELECT * FROM films WHERE genre = 'Comédie'

PL/SQL

Introduction générale Pour l aide à la décision on a besoin d étendre SQL pour : Regrouper un bloc de commandes et le soumettre au noyau. Extension de SQL consiste en : Manipulation Opérations et analyses traitements

De SQL à PL/SQL Introduction de quelques principes de la programmation ; Introduction de structures de contrôle Branchement conditionnel, Itération, Affectations ; Introduire les fonctions et les procédures

Procédures et fonctions Bloc PL/SQL à trois parties : DECLARE Déclarations de constantes et de variables BEGIN Commandes exécutables END;

Bloc PL/SQL partie declare DECLARE Déclaration d un type d un attribut Variable table.attribut%type Déclaration d un type n-uplet Variable table%rowtype Variable record Déclaration d une date Variable date Déclaration d une constante Variable CONSTANT := constante

Bloc pl/sql partie BEGIN END; Partie BEGIN END : Affectation Traitement conditionnel Traitement itératif

PL/SQL Conditionnel Analyse conditionnelle : IF <condition> THEN ELSE IF <condition> THEN ELSE IF <condition> THEN ELSE END IF; END IF; END IF;

PL/SQL Itératif FOR compteur DOMAINE LOOP INSTRUCTION END LOOP;

PL/SQL Itératif FOR i IN select nocli, count(qtité*pu) into total from commande group by nocli LOOP IF total > 10000 THEN INSERT i into table_tb_client; END IF; END LOOP;

Procédures et fonctions Offrir aux programmeurs la possibilité de créer des blocs de traitements. Introduire quelques bases de la programmation dans les moteurs SQL Les procédures et les fonctions sont stockées dans la base de données comme les autres objets (tables, requêtes, )

Création d une fonction ou procédure sans paramètres CREATE FUNCTION gen_cle_client () RETURNS OPAQUE AS ' DECLARE nocli integer; BEGIN select into nocli max(no_client) from client; IF nocli ISNULL THEN nocli:=0; END IF; NEW.no_client:=nocli+1; RETURN NEW; END; ' LANGUAGE 'plpgsql';

CREATION avec paramètres CREATE FUNCTION double (integer) RETURNS integer AS 'BEGIN RETURN 2*$1; END; ' LANGUAGE 'plpgsql'; Les paramètres sont utilisés via les macros $1, $2, $x pour les paramètres 1, 2 xème

Remplacement REPLACE permet de changer le code d une fonction existante En générale lors de la création on peut aussi mettre la primitive REPLACE. CREATE OR REPLACE FUNCTION double (integer) RETURNS integer AS 'BEGIN RETURN 2*$1; END; ' LANGUAGE 'plpgsql';

Exemple CREATE OR REPLACE FUNCTION gen_cle_client () RETURNS void AS 'DECLARE i RECORD; total real; BEGIN FOR i IN select nocli, count(qtité*pu) into total from commande group by nocli LOOP IF total > 10000 THEN INSERT i into table_tb_client; END IF; END LOOP; END; ' LANGUAGE 'plpgsql';

LES TRIGGERS

Définition Qu'est-ce qu'un trigger? Un déclencheur est un programme stocké dans une base de données. Un trigger est associé à une table de la base de donnée. Un trigger est associé à un événement qui se produit sur cette table. Le trigger est exécuté automatiquement lorsque l'événement auquel il est attaché se produit sur la table

Intérêt Gestion événementiel transparente Une mise à jour automatique cohérente Une sécurité renforcée Une maintenabilité des tables facile Gestion d un historique Facilite l analyse de données pour la décision En général : implémentation des MCT

Les événements déclenchants Le programme associé au trigger se déclenche lorsque l un des événements se produit : Insertion dans la table : insert Mise à jour : update Suppression : delete

Caractéristique Un trigger est associé à une seule table S exécute à l arrivée de l événement Déclenche un bloc PL/SQL (fonction) Détruit avec la destruction d une table Peut être désactivé.

Description L événement : DELETE, UPDATE, INSERT Le type : une seule fois ou pour toutes les lignes Séquencement : avant ou après prise en compte de l événement Les restrictions : condition On utilise aussi les prédicats inserting, deleting, updating

SYNTAXE CREATE TRIGGER <nom_trig> BEFORE AFTER DELETE OR INSERT OR UPDATE FOR EACH ROW ON <nom_table> EXECUTE PROCEDURE <nom_func>

Exemple CREATE FUNCTION gen_cle_client () RETURNS OPAQUE AS 'DECLARE nocli integer; BEGIN select into nocli max(no_client) from client; IF nocli ISNULL THEN nocli:=0; END IF; NEW.no_client:=nocli+1; RETURN NEW; END; ' LANGUAGE 'plpgsql'; CREATE TRIGGER trig_bef_ins_client BEFORE INSERT ON client FOR EACH ROW EXECUTE PROCEDURE gen_cle_client();

Les références des TRIGGER Dans les blocs PL/SQL : On fait référence aux nouvelles et anciennes valeurs issues des événements. Les Références sont : OLD : ancienne valeur NEW : nouvelle valeur Lien entre OLD, NEW et événement

OLD, NEW dans INSERT, DELETE et UPDATE OLD NEW INSERT DELETE UPDATE NULL Valeur supprimée Valeur avant modification Valeur créée NULL Valeur après modification

Exemple CREATE FUNCTION gerehisto () RETURNS OPAQUE AS 'DECLARE nocli integer; BEGIN IF NEW.salaire<>OLD.salaire THEN INSERT into hist_sal values(new.nom,new.prenom,''now'',old.salaire,new.salaire); END IF; RETURN NEW; END; ' LANGUAGE 'plpgsql'; CREATE TRIGGER trig_bef_update_employe BEFORE update ON salarie FOR EACH ROW EXECUTE PROCEDURE gerehisto();

Complément VOIR http://www.btsinfogap.org/cours/s2/ig2 /triggers_postgres_plpgsql.html#id27 51696

AUTO-FORMATION EXEMPLE ET CORRECTION ACCESSIBLE