documentation postgresql 9.6 · documentation postgresql 9.6 ... préface xix

2005
Documentation PostgreSQL 9.6.18 The PostgreSQL Global Development Group

Upload: others

Post on 27-May-2020

128 views

Category:

Documents


0 download

TRANSCRIPT

  • Documentation PostgreSQL 9.6.18

    The PostgreSQL Global Development Group

  • Documentation PostgreSQL 9.6.18The PostgreSQL Global Development GroupCopyright © 1996-2020 The PostgreSQL Global Development Group

    Legal Notice

    PostgreSQL™ is Copyright (c) 1996-2020 by the PostgreSQL Global Development Group.

    Postgres95™ is Copyright (c) 1994-5 by the Regents of the University of California.

    Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby gran-ted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.

    IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, ORCONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVENIF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WAR-RANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN « AS-IS »BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,OR MODIFICATIONS.

  • Préface ........................................................................................................................................................ xix1. Définition de PostgreSQL™ .................................................................................................................. xix2. Bref historique de PostgreSQL™ ............................................................................................................ xix3. Conventions ....................................................................................................................................... xxi4. Pour plus d'informations ........................................................................................................................ xxi5. Lignes de conduite pour les rapports de bogues ......................................................................................... xxi

    I. Tutoriel ...................................................................................................................................................... 11. Démarrage ............................................................................................................................................ 2

    1.1. Installation ................................................................................................................................... 21.2. Concepts architecturaux de base ....................................................................................................... 21.3. Création d'une base de données ........................................................................................................ 21.4. Accéder à une base ........................................................................................................................ 4

    2. Le langage SQL .................................................................................................................................... 52.1. Introduction ................................................................................................................................. 52.2. Concepts ..................................................................................................................................... 52.3. Créer une nouvelle table ................................................................................................................. 52.4. Remplir une table avec des lignes ..................................................................................................... 62.5. Interroger une table ........................................................................................................................ 62.6. Jointures entre les tables ................................................................................................................. 82.7. Fonctions d'agrégat ........................................................................................................................ 92.8. Mises à jour ................................................................................................................................ 112.9. Suppressions ............................................................................................................................... 11

    3. Fonctionnalités avancées ........................................................................................................................ 123.1. Introduction ................................................................................................................................ 123.2. Vues .......................................................................................................................................... 123.3. Clés étrangères ............................................................................................................................ 123.4. Transactions ................................................................................................................................ 133.5. Fonctions de fenêtrage .................................................................................................................. 143.6. Héritage ........................................................................................................................................3.7. Conclusion .................................................................................................................................. 18

    II. Langage SQL ............................................................................................................................................ 194. Syntaxe SQL ....................................................................................................................................... 20

    4.1. Structure lexicale ......................................................................................................................... 204.2. Expressions de valeurs .................................................................................................................. 274.3. Fonctions appelantes ..................................................................................................................... 38

    5. Définition des données ........................................................................................................................... 415.1. Notions fondamentales sur les tables ................................................................................................ 415.2. Valeurs par défaut ........................................................................................................................ 425.3. Contraintes ................................................................................................................................. 425.4. Colonnes système ......................................................................................................................... 495.5. Modification des tables .................................................................................................................. 505.6. Droits ......................................................................................................................................... 515.7. Row Security Policies ................................................................................................................... 525.8. Schémas ..................................................................................................................................... 565.9. L'héritage ......................................................................................................................................5.10. Partitionnement .......................................................................................................................... 635.11. Données distantes ....................................................................................................................... 695.12. Autres objets de la base de données ................................................................................................ 695.13. Gestion des dépendances .............................................................................................................. 69

    6. Manipulation de données ........................................................................................................................ 716.1. Insérer des données ....................................................................................................................... 716.2. Actualiser les données ................................................................................................................... 726.3. Supprimer des données .................................................................................................................. 726.4. Renvoyer des données provenant de lignes modifiées .......................................................................... 73

    7. Requêtes ............................................................................................................................................. 747.1. Aperçu ....................................................................................................................................... 747.2. Expressions de table ..................................................................................................................... 747.3. Listes de sélection ........................................................................................................................ 867.4. Combiner des requêtes .................................................................................................................. 877.5. Tri des lignes ............................................................................................................................... 877.6. LIMIT et OFFSET ....................................................................................................................... 887.7. Listes VALUES ............................................................................................................................ 89

    iii

  • 7.8. Requêtes WITH (Common Table Expressions) ................................................................................... 908. Types de données ................................................................................................................................. 95

    8.1. Types numériques ........................................................................................................................ 968.2. Types monétaires ....................................................................................................................... 1008.3. Types caractère .......................................................................................................................... 1008.4. Types de données binaires ............................................................................................................ 1028.5. Types date/heure ........................................................................................................................ 1048.6. Type booléen ............................................................................................................................. 1128.7. Types énumération ..................................................................................................................... 1138.8. Types géométriques .................................................................................................................... 1148.9. Types adresses réseau ................................................................................................................. 1168.10. Type chaîne de bits ................................................................................................................... 1188.11. Types de recherche plein texte .................................................................................................... 1198.12. Type UUID ............................................................................................................................. 1218.13. Type XML .............................................................................................................................. 1218.14. Types JSON ............................................................................................................................ 1238.15. Tableaux ................................................................................................................................. 1298.16. Types composites ..................................................................................................................... 1368.17. Types intervalle de valeurs ......................................................................................................... 1418.18. Types identifiant d'objet ............................................................................................................. 1468.19. pg_lsn Type ............................................................................................................................. 1478.20. Pseudo-Types .......................................................................................................................... 147

    9. Fonctions et opérateurs ........................................................................................................................ 1499.1. Opérateurs logiques .................................................................................................................... 1499.2. Fonctions et opérateurs de comparaison .......................................................................................... 1499.3. Fonctions et opérateurs mathématiques ........................................................................................... 1519.4. Fonctions et opérateurs de chaînes ................................................................................................. 1549.5. Fonctions et opérateurs de chaînes binaires ...................................................................................... 1659.6. Fonctions et opérateurs sur les chaînes de bits .................................................................................. 1689.7. Correspondance de motif ............................................................................................................. 1699.8. Fonctions de formatage des types de données .................................................................................. 1819.9. Fonctions et opérateurs sur date/heure ............................................................................................ 1869.10. Fonctions de support enum ......................................................................................................... 1979.11. Fonctions et opérateurs géométriques ........................................................................................... 1979.12. Fonctions et opérateurs sur les adresses réseau ............................................................................... 2019.13. Fonctions et opérateurs de la recherche plein texte .......................................................................... 2029.14. Fonctions XML ........................................................................................................................ 2079.15. Fonctions et opérateurs JSON ..................................................................................................... 2169.16. Fonctions de manipulation de séquences ....................................................................................... 2239.17. Expressions conditionnelles ........................................................................................................ 2259.18. Fonctions et opérateurs de tableaux .............................................................................................. 2279.19. Fonctions et opérateurs sur les données de type range ...................................................................... 2309.20. Fonctions d'agrégat ................................................................................................................... 2319.21. Fonctions Window .................................................................................................................... 2419.22. Expressions de sous-requêtes ...................................................................................................... 2439.23. Comparaisons de lignes et de tableaux .......................................................................................... 2459.24. Fonctions retournant des ensembles ............................................................................................. 2489.25. Fonctions d'informations système ................................................................................................ 2509.26. Fonctions d'administration système .............................................................................................. 2649.27. Fonctions trigger ...................................................................................................................... 2819.28. Fonctions des triggers sur les événements ...................................................................................... 282

    10. Conversion de types .......................................................................................................................... 28510.1. Aperçu ................................................................................................................................... 28510.2. Opérateurs ............................................................................................................................... 28610.3. Fonctions ................................................................................................................................ 28910.4. Stockage de valeurs ................................................................................................................... 29110.5. Constructions UNION, CASE et constructions relatives .................................................................... 292

    11. Index .............................................................................................................................................. 29511.1. Introduction ............................................................................................................................. 29511.2. Types d'index ........................................................................................................................... 29511.3. Index multicolonnes .................................................................................................................. 29711.4. Index et ORDER BY .................................................................................................................. 29811.5. Combiner des index multiples ..................................................................................................... 299

    Documentation PostgreSQL 9.6.18

    iv

  • 11.6. Index d'unicité ......................................................................................................................... 29911.7. Index d'expressions ................................................................................................................... 30011.8. Index partiels ........................................................................................................................... 30011.9. Classes et familles d'opérateurs ................................................................................................... 30211.10. Index et collationnements ......................................................................................................... 30311.11. Parcours d'index seul ............................................................................................................... 30411.12. Examiner l'utilisation des index ................................................................................................. 305

    12. Recherche plein texte ......................................................................................................................... 30712.1. Introduction ............................................................................................................................. 30712.2. Tables et index ......................................................................................................................... 31012.3. Contrôler la recherche plein texte ................................................................................................. 31212.4. Fonctionnalités supplémentaires .................................................................................................. 31712.5. Analyseurs .............................................................................................................................. 32212.6. Dictionnaires ........................................................................................................................... 32312.7. Exemple de configuration ........................................................................................................... 33112.8. Tester et déboguer la recherche plein texte ..................................................................................... 33212.9. Types d'index GiST et GIN ........................................................................................................ 33612.10. Support de psql ....................................................................................................................... 33612.11. Limites ................................................................................................................................. 33912.12. Migration à partir d'une recherche plein texte antérieure à 8.3 .......................................................... 339

    13. Contrôle d'accès simultané .................................................................................................................. 34013.1. Introduction ............................................................................................................................. 34013.2. Isolation des transactions ........................................................................................................... 34013.3. Verrouillage explicite ................................................................................................................ 34513.4. Vérification de cohérence des données au niveau de l'application ....................................................... 34913.5. Avertissements ......................................................................................................................... 35013.6. Verrous et index ....................................................................................................................... 350

    14. Conseils sur les performances .............................................................................................................. 35214.1. Utiliser EXPLAIN ................................................................................................................... 35214.2. Statistiques utilisées par le planificateur ........................................................................................ 36114.3. Contrôler le planificateur avec des clauses JOIN explicites .............................................................. 36214.4. Remplir une base de données ...................................................................................................... 36314.5. Configuration avec une perte acceptée .......................................................................................... 366

    15. Requêtes parallélisées ........................................................................................................................ 36715.1. Comment fonctionne la parallélisation des requêtes ......................................................................... 36715.2. Quand la parallélisation des requêtes peut-elle être utilisée ? ............................................................. 36715.3. Plans parallélisés ...................................................................................................................... 36815.4. Sécurité sur la parallélisation ...................................................................................................... 369

    III. Administration du serveur ......................................................................................................................... 37116. Procédure d'installation de PostgreSQL™ du code source ......................................................................... 372

    16.1. Version courte ......................................................................................................................... 37216.2. Prérequis ................................................................................................................................. 37216.3. Obtenir les sources .................................................................................................................... 37316.4. Procédure d'installation .............................................................................................................. 37416.5. Initialisation post-installation ...................................................................................................... 38316.6. Démarrer ................................................................................................................................ 38416.7. Et maintenant ? ........................................................................................................................ 38416.8. Plateformes supportées .............................................................................................................. 38516.9. Notes spécifiques à des plateformes ............................................................................................. 385

    17. Installation à partir du code source sur Windows™ .................................................................................. 39317.1. Construire avec Visual C++™ ou le Microsoft Windows SDK™ ....................................................... 39317.2. Construire libpq avec Visual C++™ ou Borland C++™ ................................................................... 397

    18. Configuration du serveur et mise en place .............................................................................................. 39818.1. Compte utilisateur PostgreSQL™ ................................................................................................ 39818.2. Créer un groupe de base de données ............................................................................................. 39818.3. Lancer le serveur de bases de données .......................................................................................... 39918.4. Gérer les ressources du noyau ..................................................................................................... 40218.5. Arrêter le serveur ...................................................................................................................... 41018.6. Mise à jour d'une instance PostgreSQL™ ...................................................................................... 41018.7. Empêcher l'usurpation de serveur ................................................................................................. 41318.8. Options de chiffrement .............................................................................................................. 41318.9. Connexions tcp/ip sécurisées avec ssl ........................................................................................... 41418.10. Connexions tcp/ip sécurisées avec des tunnels ssh tunnels ............................................................... 416

    Documentation PostgreSQL 9.6.18

    v

  • 18.11. Enregistrer le journal des événements sous Windows .................................................................... 41719. Configuration du serveur .................................................................................................................... 418

    19.1. Paramètres de configuration ........................................................................................................ 41819.2. Emplacement des fichiers ........................................................................................................... 42119.3. Connexions et authentification .................................................................................................... 42219.4. Consommation des ressources ..................................................................................................... 42619.5. Write Ahead Log ...................................................................................................................... 43119.6. Réplication .............................................................................................................................. 43619.7. Planification des requêtes ........................................................................................................... 43919.8. Remonter et tracer les erreurs ...................................................................................................... 44319.9. Statistiques d'exécution .............................................................................................................. 45119.10. Nettoyage (vacuum) automatique .............................................................................................. 45219.11. Valeurs par défaut des connexions client ..................................................................................... 45319.12. Gestion des verrous ................................................................................................................. 46019.13. Compatibilité de version et de plateforme .................................................................................... 46019.14. Gestion des erreurs .................................................................................................................. 46219.15. Options préconfigurées ............................................................................................................ 46319.16. Options personnalisées ............................................................................................................. 46419.17. Options pour les développeurs ................................................................................................... 46419.18. Options courtes ...................................................................................................................... 466

    20. Authentification du client ................................................................................................................... 46820.1. Le fichier pg_hba.conf ......................................................................................................... 46820.2. Correspondances d'utilisateurs .................................................................................................... 47320.3. Méthodes d'authentification ........................................................................................................ 47420.4. Problèmes d'authentification ....................................................................................................... 481

    21. Rôles de la base de données ................................................................................................................ 48321.1. Rôles de la base de données ........................................................................................................ 48321.2. Attributs des rôles ..................................................................................................................... 48321.3. Appartenance d'un rôle .............................................................................................................. 48421.4. Supprimer des rôles ................................................................................................................... 48621.5. Rôles par défaut ....................................................................................................................... 48621.6. Sécurité des fonctions ................................................................................................................ 486

    22. Administration des bases de données .................................................................................................... 48822.1. Aperçu ................................................................................................................................... 48822.2. Création d'une base de données ................................................................................................... 48822.3. Bases de données modèles .......................................................................................................... 48922.4. Configuration d'une base de données ............................................................................................ 49022.5. Détruire une base de données ...................................................................................................... 49022.6. Tablespaces ............................................................................................................................. 490

    23. Localisation ..................................................................................................................................... 49323.1. Support des locales ................................................................................................................... 49323.2. Support des collations ................................................................................................................ 49523.3. Support des jeux de caractères ..................................................................................................... 497

    24. Planifier les tâches de maintenance ....................................................................................................... 50224.1. Nettoyages réguliers .................................................................................................................. 50224.2. Ré-indexation régulière .............................................................................................................. 50824.3. Maintenance du fichier de traces .................................................................................................. 508

    25. Sauvegardes et restaurations ................................................................................................................ 51025.1. Sauvegarde SQL ...................................................................................................................... 51025.2. Sauvegarde de niveau système de fichiers ...................................................................................... 51225.3. Archivage continu et récupération d'un instantané (PITR) ................................................................. 513

    26. Haute disponibilité, répartition de charge et réplication ............................................................................. 52326.1. Comparaison de différentes solutions ........................................................................................... 52326.2. Serveurs de Standby par transfert de journaux ................................................................................ 52526.3. Bascule (Failover) .................................................................................................................... 53226.4. Méthode alternative pour le log shipping ....................................................................................... 53326.5. Hot Standby ............................................................................................................................ 535

    27. Configuration de la récupération .......................................................................................................... 54127.1. Paramètres de récupération de l'archive ......................................................................................... 54127.2. Paramètres de cible de récupération .............................................................................................. 54227.3. Paramètres de serveur de Standby ................................................................................................ 543

    28. Surveiller l'activité de la base de données ............................................................................................... 54428.1. Outils Unix standard ................................................................................................................. 544

    Documentation PostgreSQL 9.6.18

    vi

  • 28.2. Le récupérateur de statistiques ..................................................................................................... 54528.3. Visualiser les verrous ................................................................................................................ 56328.4. Rapporter la progression ............................................................................................................ 56328.5. Traces dynamiques ................................................................................................................... 565

    29. Surveiller l'utilisation des disques ......................................................................................................... 57429.1. Déterminer l'utilisation des disques .............................................................................................. 57429.2. Panne pour disque saturé ............................................................................................................ 575

    30. Fiabilité et journaux de transaction ....................................................................................................... 57630.1. Fiabilité .................................................................................................................................. 57630.2. Write-Ahead Logging (WAL) ..................................................................................................... 57730.3. Validation asynchrone (Asynchronous Commit) ............................................................................. 57830.4. Configuration des journaux de transaction ..................................................................................... 57930.5. Vue interne des journaux de transaction ........................................................................................ 581

    31. Tests de régression ............................................................................................................................ 58331.1. Lancer les tests ......................................................................................................................... 58331.2. Évaluation des tests ................................................................................................................... 58531.3. Fichiers de comparaison de variants ............................................................................................. 58731.4. TAP Tests ............................................................................................................................... 58831.5. Examen de la couverture du test .................................................................................................. 588

    IV. Interfaces client ...................................................................................................................................... 58932. libpq - Bibliothèque C ........................................................................................................................ 590

    32.1. Fonctions de contrôle de connexion à la base de données .................................................................. 59032.2. Fonctions de statut de connexion ................................................................................................. 59932.3. Fonctions de commandes d'exécution ........................................................................................... 60332.4. Traitement des commandes asynchrones ....................................................................................... 61632.5. Récupérer le résultats des requêtes ligne par ligne ........................................................................... 61932.6. Annuler des requêtes en cours d'exécution ..................................................................................... 61932.7. Interface à chemin rapide ........................................................................................................... 62032.8. Notification asynchrone ............................................................................................................. 62132.9. Fonctions associées avec la commande COPY ............................................................................... 62232.10. Fonctions de contrôle ............................................................................................................... 62532.11. Fonctions diverses ................................................................................................................... 62632.12. Traitement des messages .......................................................................................................... 62932.13. Système d'événements ............................................................................................................. 62932.14. Variables d'environnement ........................................................................................................ 63532.15. Fichier de mots de passe ........................................................................................................... 63632.16. Fichier des connexions de service ............................................................................................... 63632.17. Recherches LDAP des paramètres de connexion ........................................................................... 63732.18. Support de SSL ...................................................................................................................... 63832.19. Comportement des programmes threadés ..................................................................................... 64132.20. Construire des applications avec libpq ......................................................................................... 64132.21. Exemples de programmes ......................................................................................................... 643

    33. Objets larges .................................................................................................................................... 65133.1. Introduction ............................................................................................................................. 65133.2. Fonctionnalités d'implémentation ................................................................................................. 65133.3. Interfaces client ........................................................................................................................ 65133.4. Fonctions du côté serveur ........................................................................................................... 65433.5. Programme d'exemple ............................................................................................................... 655

    34. ECPG SQL embarqué en C ................................................................................................................. 66034.1. Le Concept .............................................................................................................................. 66034.2. Gérer les Connexions à la Base de Données ................................................................................... 66034.3. Exécuter des Commandes SQL ................................................................................................... 66334.4. Utiliser des Variables Hôtes ........................................................................................................ 66534.5. SQL Dynamique ...................................................................................................................... 67734.6. Librairie pgtypes ...................................................................................................................... 67834.7. Utiliser les Zones de Descripteur ................................................................................................. 69034.8. Gestion des Erreurs ................................................................................................................... 70134.9. Directives de Préprocesseur ........................................................................................................ 70634.10. Traiter des Programmes en SQL Embarqué .................................................................................. 70834.11. Fonctions de la Librairie ........................................................................................................... 70834.12. Large Objects ......................................................................................................................... 70934.13. Applications C++ .................................................................................................................... 71034.14. Commandes SQL Embarquées .................................................................................................. 713

    Documentation PostgreSQL 9.6.18

    vii

  • 34.15. Mode de Compatibilité Informix™ ............................................................................................. 73334.16. Fonctionnement Interne ............................................................................................................ 745

    35. Schéma d'information ........................................................................................................................ 74735.1. Le schéma ............................................................................................................................... 74735.2. Types de données ..................................................................................................................... 74735.3. information_schema_catalog_name ............................................................................... 74735.4. administrable_role_authorizations ........................................................................... 74835.5. applicable_roles ............................................................................................................. 74835.6. attributes ......................................................................................................................... 74835.7. character_sets ................................................................................................................. 75135.8. check_constraint_routine_usage ................................................................................. 75235.9. check_constraints ........................................................................................................... 75235.10. collations ........................................................................................................................ 75235.11. collation_character_set_applicability .................................................................. 75335.12. column_domain_usage ...................................................................................................... 75335.13. column_options ................................................................................................................ 75335.14. column_privileges .......................................................................................................... 75435.15. column_udt_usage ............................................................................................................ 75435.16. columns .............................................................................................................................. 75535.17. constraint_column_usage .............................................................................................. 75735.18. constraint_table_usage ................................................................................................ 75835.19. data_type_privileges .................................................................................................... 75835.20. domain_constraints ........................................................................................................ 75935.21. domain_udt_usage ............................................................................................................ 75935.22. domains .............................................................................................................................. 76035.23. element_types .................................................................................................................. 76135.24. enabled_roles .................................................................................................................. 76335.25. foreign_data_wrapper_options .................................................................................... 76335.26. foreign_data_wrappers .................................................................................................. 76435.27. foreign_server_options ................................................................................................ 76435.28. foreign_servers .............................................................................................................. 76435.29. foreign_table_options .................................................................................................. 76535.30. foreign_tables ................................................................................................................ 76535.31. key_column_usage ............................................................................................................ 76535.32. parameters ........................................................................................................................ 76635.33. referential_constraints .............................................................................................. 76735.34. role_column_grants ........................................................................................................ 76835.35. role_routine_grants ...................................................................................................... 76835.36. role_table_grants .......................................................................................................... 76935.37. role_udt_grants .............................................................................................................. 76935.38. role_usage_grants .......................................................................................................... 77035.39. routine_privileges ........................................................................................................ 77035.40. routines ............................................................................................................................ 77135.41. schemata ............................................................................................................................ 77435.42. sequences .......................................................................................................................... 77535.43. sql_features .................................................................................................................... 77535.44. sql_implementation_info .............................................................................................. 77635.45. sql_languages .................................................................................................................. 77635.46. sql_packages .................................................................................................................... 77735.47. sql_parts .......................................................................................................................... 77735.48. sql_sizing ........................................................................................................................ 77735.49. sql_sizing_profiles ...................................................................................................... 77835.50. table_constraints .......................................................................................................... 77835.51. table_privileges ............................................................................................................ 77835.52. tables ................................................................................................................................ 77935.53. transforms ........................................................................................................................ 78035.54. triggered_update_columns ............................................................................................ 78035.55. triggers ............................................................................................................................ 78035.56. udt_privileges ................................................................................................................ 78235.57. usage_privileges ............................................................................................................ 78235.58. user_defined_types ........................................................................................................ 78335.59. user_mapping_options .................................................................................................... 78435.60. user_mappings .................................................................................................................. 784

    Documentation PostgreSQL 9.6.18

    viii

  • 35.61. view_column_usage .......................................................................................................... 78535.62. view_routine_usage ........................................................................................................ 78535.63. view_table_usage ............................................................................................................ 78635.64. views .................................................................................................................................. 786

    V. Programmation serveur ............................................................................................................................. 78836. Étendre SQL .................................................................................................................................... 789

    36.1. L'extensibilité .......................................................................................................................... 78936.2. Le système des types de PostgreSQL™ ......................................................................................... 78936.3. Fonctions utilisateur .................................................................................................................. 79036.4. Fonctions en langage de requêtes (SQL) ........................................................................................ 79136.5. Surcharge des fonctions ............................................................................................................. 80236.6. Catégories de volatilité des fonctions ............................................................................................ 80336.7. Fonctions en langage de procédures ............................................................................................. 80436.8. Fonctions internes ..................................................................................................................... 80436.9. Fonctions en langage C .............................................................................................................. 80436.10. Agrégats utilisateur ................................................................................................................. 82436.11. Types utilisateur ..................................................................................................................... 82936.12. Opérateurs définis par l'utilisateur .............................................................................................. 83336.13. Informations sur l'optimisation d'un opérateur .............................................................................. 83336.14. Interfacer des extensions d'index ................................................................................................ 83736.15. Empaqueter des objets dans une extension ................................................................................... 84736.16. Outils de construction d'extension .............................................................................................. 852

    37. Déclencheurs (triggers) ...................................................................................................................... 85537.1. Aperçu du comportement des déclencheurs .................................................................................... 85537.2. Visibilité des modifications des données ....................................................................................... 85737.3. Écrire des fonctions déclencheurs en C ......................................................................................... 85737.4. Un exemple complet de trigger .................................................................................................... 859

    38. Déclencheurs (triggers) sur évènement .................................................................................................. 86338.1. Aperçu du fonctionnement des triggers sur évènement ..................................................................... 86338.2. Matrice de déclenchement des triggers sur évènement ...................................................................... 86338.3. Écrire des fonctions trigger sur événement en C .............................................................................. 86738.4. Un exemple complet de trigger sur événement ................................................................................ 86838.5. Un exemple de trigger sur événement de table modifiée ................................................................... 869

    39. Système de règles .............................................................................................................................. 87139.1. Arbre de requêtes ..................................................................................................................... 87139.2. Vues et système de règles ........................................................................................................... 87239.3. Vues matérialisées .................................................................................................................... 87839.4. Règles sur insert, update et delete .............................................................................................. 88039.5. Règles et droits ........................................................................................................................ 88939.6. Règles et statut de commande ..................................................................................................... 89139.7. Règles contre déclencheurs ......................................................................................................... 891

    40. Langages de procédures ..................................................................................................................... 89440.1. Installation des langages de procédures ......................................................................................... 894

    41. PL/pgSQL - Langage de procédures SQL .............................................................................................. 89641.1. Aperçu ................................................................................................................................... 89641.2. Structure de PL/pgSQL .............................................................................................................. 89741.3. Déclarations ............................................................................................................................ 89841.4. Expressions ............................................................................................................................. 90341.5. Instructions de base ................................................................................................................... 90341.6. Structures de contrôle ................................................................................................................ 91041.7. Curseurs ................................................................................................................................. 92241.8. Erreurs et messages ................................................................................................................... 92741.9. Procédures trigger ..................................................................................................................... 92941.10. Les dessous de PL/pgSQL ........................................................................................................ 93541.11. Astuces pour développer en PL/pgSQL ....................................................................................... 93841.12. Portage d'Oracle™ PL/SQL ...................................................................................................... 940

    42. PL/Tcl - Langage de procédures Tcl ..................................................................................................... 94942.1. Aperçu ................................................................................................................................... 94942.2. Fonctions et arguments PL/Tcl .................................................................................................... 94942.3. Valeurs des données avec PL/Tcl ................................................................................................. 95042.4. Données globales avec PL/Tcl ..................................................................................................... 95042.5. Accès à la base de données depuis PL/Tcl ..................................................................................... 95142.6. Procédures pour déclencheurs en PL/Tcl ....................................................................................... 952

    Documentation PostgreSQL 9.6.18

    ix

  • 42.7. Procédures de trigger sur événement en PL/Tcl .............................................................................. 95442.8. Gestion des erreurs avec PL/Tcl .................................................................................................. 95442.9. Les modules et la commande unknown ....................................................................................... 95542.10. Noms de procédure Tcl ............................................................................................................ 955

    43. PL/Perl - Langage de procédures Perl .................................................................................................... 95643.1. Fonctions et arguments PL/Perl ................................................................................................... 95643.2. Valeurs en PL/Perl .................................................................................................................... 95943.3. Fonction incluses ...................................................................................................................... 95943.4. Valeurs globales dans PL/Perl ..................................................................................................... 96343.5. Niveaux de confiance de PL/Perl ................................................................................................. 96343.6. Déclencheurs PL/Perl ................................................................................................................ 96443.7. Triggers sur événements avec PL/Perl .......................................................................................... 96543.8. PL/Perl sous le capot ................................................................................................................. 966

    44. PL/Python - Langage de procédures Python ........................................................................................... 96844.1. Python 2 et Python 3 ................................................................................................................. 96844.2. Fonctions PL/Python ................................................................................................................. 96944.3. Valeur des données avec PL/Python ............................................................................................. 97044.4. Sharing Data ............................................................................................................................ 97444.5. Blocs de code anonymes ............................................................................................................ 97444.6. Fonctions de déclencheurs .......................................................................................................... 97444.7. Accès à la base de données ......................................................................................................... 97544.8. Sous-transactions explicites ........................................................................................................ 97844.9. Fonctions outils ........................................................................................................................ 97944.10. Variables d'environnement ........................................................................................................ 980

    45. Interface de programmation serveur ...................................................................................................... 98245.1. Fonctions d'interface ................................................................................................................. 98245.2. Fonctions de support d'interface ................................................................................................ 101245.3. Gestion de la mémoire ............................................................................................................. 102045.4. Visibilité des modifications de données ....................................................................................... 102945.5. Exemples .............................................................................................................................. 1029

    46. Processus en tâche de fond (background worker) ................................................................................... 103247. Décodage logique (Logical Decoding) ................................................................................................ 1035

    47.1. Exemples de décodage logique .................................................................................................. 103547.2. Concepts de décodage logique ................................................................................................... 103747.3. Interface du protocole de réplication par flux ............................................................................... 103847.4. Interface SQL de décodage logique ............................................................................................ 103847.5. Catalogues systèmes liés au décodage logique .............................................................................. 103847.6. Plugins de sortie de décodage logique ......................................................................................... 103847.7. Écrivains de sortie de décodage logique ...................................................................................... 104147.8. Support de la réplication synchrone pour le décodage logique ......................................................... 1041

    48. Tracer la progression de la réplication ................................................................................................. 1043VI. Référence ............................................................................................................................................ 1044

    I. Commandes SQL .............................................................................................................................. 1045ABORT ....................................................................................................................................... 1046ALTER AGGREGATE ................................................................................................................... 1047ALTER COLLATION .................................................................................................................... 1049ALTER CONVERSION .................................................................................................................. 1050ALTER DATABASE ..................................................................................................................... 1051ALTER DEFAULT PRIVILEGES .................................................................................................... 1053ALTER DOMAIN ......................................................................................................................... 1056ALTER EVENT TRIGGER ............................................................................................................. 1059ALTER EXTENSION .................................................................................................................... 1060ALTER FOREIGN DATA WRAPPER .............................................................................................. 1063ALTER FOREIGN TABLE ............................................................................................................. 1065ALTER FUNCTION ...................................................................................................................... 1069ALTER GROUP ............................................................................................................................ 1072ALTER INDEX ............................................................................................................................. 1073ALTER LANGUAGE ..................................................................................................................... 1075ALTER LARGE OBJECT ............................................................................................................... 1076ALTER MATERIALIZED VIEW ..................................................................................................... 1077ALTER OPERATOR ...................................................................................................................... 1079ALTER OPERATOR CLASS .......................................................................................................... 1081ALTER OPERATOR FAMILY ........................................................................................................ 1082

    Documentation PostgreSQL 9.6.18

    x

  • ALTER POLICY ........................................................................................................................... 1085ALTER ROLE .............................................................................................................................. 1086ALTER RULE .............................................................................................................................. 1089ALTER SCHEMA ......................................................................................................................... 1090ALTER SEQUENCE ...................................................................................................................... 1091ALTER SERVER .......................................................................................................................... 1093ALTER SYSTEM .......................................................................................................................... 1094ALTER TABLE ............................................................................................................................ 1096ALTER TABLESPACE .................................................................................................................. 1106ALTER TEXT SEARCH CONFIGURATION .................................................................................... 1107ALTER TEXT SEARCH DICTIONARY ........................................................................................... 1109ALTER TEXT SEARCH PARSER ................................................................................................... 1111ALTER TEXT SEARCH TEMPLATE .............................................................................................. 1112ALTER TRIGGER ......................................................................................................................... 1113ALTER TYPE ............................................................................................................................... 1114ALTER USER ............................................................................................................................... 1117ALTER USER MAPPING ............................................................................................................... 1118ALTER VIEW .............................................................................................................................. 1119ANALYZE ................................................................................................................................... 1121BEGIN ........................................................................................................................................ 1123CHECKPOINT .............................................................................................................................. 1125CLOSE ........................................................................................................................................ 1126CLUSTER .................................................................................................................................... 1127COMMENT .................................................................................................................................. 1129COMMIT ..................................................................................................................................... 1132COMMIT PREPARED ................................................................................................................... 1133COPY .......................................................................................................................................... 1134CREATE ACCESS METHOD ......................................................................................................... 1142CREATE AGGREGATE ................................................................................................................. 1143CREATE CAST ............................................................................................................................ 1149CREATE COLLATION .................................................................................................................. 1153CREATE CONVERSION ............................................................................................................... 1155CREATE DATABASE ................................................................................................................... 1157CREATE DOMAIN ....................................................................................................................... 1160CREATE EVENT TRIGGER ........................................................................................................... 1163CREATE EXTENSION .................................................................................................................. 1165CREATE FOREIGN DATA WRAPPER ............................................................................................ 1167CREATE FOREIGN TABLE ........................................................................................................... 1169CREATE FUNCTION .................................................................................................................... 1172CREATE GROUP .......................................................................................................................... 1178CREATE INDEX ........................................................................................................................... 1179CREATE LANGUAGE .................................................................................................................. 1185CREATE MATERIALIZED VIEW ................................................................................................... 1188CREATE OPERATOR ................................................................................................................... 1189CREATE OPERATOR CLASS ........................................................................................................ 1191CREATE OPERATOR FAMILY ...................................................................................................... 1194CREATE POLICY ......................................................................................................................... 1195CREATE ROLE ............................................................................................................................ 1199CREATE RULE ............................................................................................................................ 1202CREATE SCHEMA ....................................................................................................................... 1205CREATE SEQUENCE ................................................................................................................... 1207CREATE SERVER ........................................................................................................................ 1210CREATE TABLE .......................................................................................................................... 1212CREATE TABLE AS ..................................................................................................................... 1224CREATE TABLESPACE ................................................................................................................ 1227CREATE TEXT SEARCH CONFIGURATION .................................................................................. 1229CREATE TEXT SEARCH DICTIONARY ......................................................................................... 1230CREATE TEXT SEARCH PARSER ................................................................................................. 1231CREATE TEXT SEARCH TEMPLATE ............................................................................................ 1232CREATE TRANSFORM ................................................................................................................ 1233CREATE TRIGGER ...................................................................................................................... 1235CREATE TYPE ............................................................................................................................. 1240CREATE USER ............................................................................................................................ 1247

    Documentation PostgreSQL 9.6.18

    xi

  • CREATE USER MAPPING ............................................................................................................. 1248CREATE VIEW ............................................................................................................................ 1249DEALLOCATE ............................................................................................................................. 1253DECLARE ................................................................................................................................... 1254DELETE ...................................................................................................................................... 1257DISCARD .................................................................................................................................... 1259DO .............................................................................................................................................. 1260DROP ACCESS METHOD ............................................................................................................. 1261DROP AGGREGATE ..................................................................................................................... 1262DROP CAST ................................................................................................................................ 1264DROP COLLATION ...................................................................................................................... 1265DROP CONVERSION ................................................................................................................... 1266DROP DATABASE ....................................................................................................................... 1267DROP DOMAIN ........................................................................................................................... 1268DROP EXTENSION ...................................................................................................................... 1269DROP EVENT TRIGGER ............................................................................................................... 1270DROP FOREIGN DATA WRAPPER ................................................................................................ 1271DROP FOREIGN TABLE ............................................................................................................... 1272DROP FUNCTION ........................................................................................................................ 1273DROP GROUP .............................................................................................................................. 1274DROP INDEX ............................................................................................................................... 1275DROP LANGUAGE ...................................................................................................................... 1276DROP MATERIALIZED VIEW ....................................................................................................... 1277DROP OPERATOR ....................................................................................................................... 1278DROP OPERATOR CLASS ............................................................................................................ 1279DROP OPERATOR FAMILY .......................................................................................................... 1280DROP OWNED ............................................................................................................................. 1281DROP POLICY ............................................................................................................................. 1282DROP ROLE ................................................................................................................................ 1283DROP RULE ................................................................................................................................ 1284DROP SCHEMA ........................................................................................................................... 1285DROP SEQUENCE ........................................................................................................................ 1286DROP SERVER ............................................................................................................................ 1287DROP TABLE .............................................................................................................................. 1288DROP TABLESPACE .................................................................................................................... 1289DROP TEXT SEARCH CONFIGURATION ...................................................................................... 1290DROP TEXT SEARCH DICTIONARY ............................................................................................. 1291DROP TEXT SEARCH PARSER ..................................................................................................... 1292DROP TEXT SEARCH TEMPLATE ................................................................................................ 1293DROP TRANSFORM ..................................................................................................................... 1294DROP TRIGGER ........................................................................................................................... 1295DROP TYPE ................................................................................................................................. 1296DROP USER ................................................................................................................................ 1297DROP USER MAPPING ................................................................................................................. 1298DROP VIEW ................................................................................................................................ 1299END ............................................................................................................................................ 1300EXECUTE ................................................................................................................................... 1301EXPLAIN .................................................................................................................................... 1302FETCH ........................................................................................................................................ 1306GRANT ....................................................................................................................................... 1309IMPORT FOREIGN SCHEMA ........................................................................................................ 1315INSERT ....................................................................................................................................... 1317LISTEN ..................................