Les fondamentaux
- Traitement transactionnel dans PostgreSQL.
- Objets et dictionnaire d'une base PostgreSQL.
- SQL et PL/PgSQL. Vue globale de PL/pgSQL.
- Outils utilisés et documentation.
Echanges
Éléments du langage
- Environnements hôtes et l'introduction syntaxique.
- Déclarations de variables et de constantes PL/pgSQL.
- Types de données, conversion et fonctions prédéfinies.
- Instructions de contrôle : IF- ELSE, la boucle LOOP, la boucle FOR.
- Types composites : records, tableaux.
- Types objets.
Travaux pratiques
Déclaration de variables, manipulation de la date, attributs de typage et utilisation des tableaux.
Accès à la base
- La base et la notion de curseur.
- Accès via curseur implicite : update, delete, insert, select. Utiliser la clause RETURNING.
- Boucles FOR à curseur et les curseurs en mise à jour.
- Curseurs explicites, FETCH, MOVE et déplacement dans un curseur.
- Utilisation de SQL dynamique : EXECUTE ... USING.
- Utilisation de GET DIAGNOSTICS et information sur l'exécution.
Travaux pratiques
Utilisation de curseur explicite et de curseurs en mise à jour.
Traitements stockés
- Fonctions SQL stockées.
- Fonctions PL/pgSQL stockées.
- Paramètres des fonctions.
- Exécution des fonctions stockées : SELECT versus PERFORM.
- Utilisation des fonctions dans la clause FROM.
- Volatilité des fonctions stockées.
- Fonctions PL/pgSQL retournant le résultat d’une requête.
- Sécurité et droits des fonctions stockées.
Travaux pratiques
Création de fonctions stockées, utilisation des différents modes de paramètres et effet de la volatilité des fonctions.
Gestion des erreurs
- Traitement d'une exception.
- Variables SQLSTATE et sqlerrm, diagnostic des erreurs.
- Utilisation de RAISE.
- Propagation des erreurs et gestion transactionnelle.
Travaux pratiques
Utilisation de RAISE et récupération d'information sur les erreurs.
Triggers
- Triggers E/C/A et utilisation de la clause WHEN. Traitements différenciés.
- Définition et types de triggers Événement/Action. Triggers de niveau instruction.
- Triggers de niveau Ligne (utilisation de NEW et OLD).
- Triggers "INSTEAD OF" sur les vues.
- Atomicité des opérations et modèle d'exécution des triggers.
Travaux pratiques
Création de triggers de niveau instruction et de triggers de niveau ligne. Modèle d'exécution des triggers.