2098
Documentation PostgreSQL 9.3.1 The PostgreSQL Global Development Group

Documentation PostgreSQL 9.3 · 11.9. Classes et familles d'opérateurs ..... 245

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

  • Documentation PostgreSQL 9.3.1

    The PostgreSQL Global Development Group

  • Documentation PostgreSQL 9.3.1The PostgreSQL Global Development GroupCopyright © 1996-2013 The PostgreSQL Global Development Group

    Legal Notice

    PostgreSQL™ is Copyright (c) 1996-2013 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 ........................................................................................................................................................ xxi1. Définition de PostgreSQL™ .................................................................................................................. xxi2. Bref historique de PostgreSQL™ ............................................................................................................ xxi3. Conventions ..................................................................................................................................... xxiii4. Pour plus d'informations ...................................................................................................................... xxiii5. Lignes de conduite pour les rapports de bogues ....................................................................................... xxiii

    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 ................................................................................................................................ 102.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 ..................................................................................................................... 36

    5. Définition des données ........................................................................................................................... 385.1. Notions fondamentales sur les tables ................................................................................................ 385.2. Valeurs par défaut ........................................................................................................................ 395.3. Contraintes ................................................................................................................................. 395.4. Colonnes système ......................................................................................................................... 455.5. Modification des tables .................................................................................................................. 465.6. Droits ......................................................................................................................................... 485.7. Schémas ..................................................................................................................................... 495.8. L'héritage ......................................................................................................................................5.9. Partitionnement ............................................................................................................................ 545.10. Données distantes ....................................................................................................................... 605.11. Autres objets de la base de données ................................................................................................ 605.12. Gestion des dépendances .............................................................................................................. 60

    6. Manipulation de données ........................................................................................................................ 626.1. Insérer des données ....................................................................................................................... 626.2. Actualiser les données ................................................................................................................... 636.3. Supprimer des données .................................................................................................................. 63

    7. Requêtes ............................................................................................................................................. 657.1. Aperçu ....................................................................................................................................... 657.2. Expressions de table ..................................................................................................................... 657.3. Listes de sélection ........................................................................................................................ 747.4. Combiner des requêtes .................................................................................................................. 757.5. Tri des lignes ............................................................................................................................... 757.6. LIMIT et OFFSET ....................................................................................................................... 767.7. Listes VALUES ............................................................................................................................ 777.8. Requêtes WITH (Common Table Expressions) ................................................................................... 77

    8. Types de données ................................................................................................................................. 82

    iii

  • 8.1. Types numériques ........................................................................................................................ 838.2. Types monétaires ......................................................................................................................... 868.3. Types caractère ............................................................................................................................ 878.4. Types de données binaires .............................................................................................................. 898.5. Types date/heure .......................................................................................................................... 908.6. Type booléen ............................................................................................................................... 988.7. Types énumération ....................................................................................................................... 998.8. Types géométriques .................................................................................................................... 1008.9. Types adresses réseau ................................................................................................................. 1028.10. Type chaîne de bits ................................................................................................................... 1048.11. Types de recherche plein texte .................................................................................................... 1048.12. Type UUID ............................................................................................................................. 1068.13. Type XML .............................................................................................................................. 1078.14. Type JSON .............................................................................................................................. 1088.15. Tableaux ................................................................................................................................. 1098.16. Types composites ..................................................................................................................... 1158.17. Types intervalle de valeurs ......................................................................................................... 1188.18. Types identifiant d'objet ............................................................................................................. 1228.19. Pseudo-Types .......................................................................................................................... 124

    9. Fonctions et opérateurs ........................................................................................................................ 1259.1. Opérateurs logiques .................................................................................................................... 1259.2. Opérateurs de comparaison .......................................................................................................... 1259.3. Fonctions et opérateurs mathématiques ........................................................................................... 1279.4. Fonctions et opérateurs de chaînes ................................................................................................. 1299.5. Fonctions et opérateurs de chaînes binaires ...................................................................................... 1409.6. Fonctions et opérateurs sur les chaînes de bits .................................................................................. 1429.7. Correspondance de motif ............................................................................................................. 1439.8. Fonctions de formatage des types de données .................................................................................. 1549.9. Fonctions et opérateurs sur date/heure ............................................................................................ 1599.10. Fonctions de support enum ......................................................................................................... 1689.11. Fonctions et opérateurs géométriques ........................................................................................... 1699.12. Fonctions et opérateurs sur les adresses réseau ............................................................................... 1729.13. Fonctions et opérateurs de la recherche plein texte .......................................................................... 1749.14. Fonctions XML ........................................................................................................................ 1779.15. Fonctions et opérateurs JSON ..................................................................................................... 1869.16. Fonctions de manipulation de séquences ....................................................................................... 1889.17. Expressions conditionnelles ........................................................................................................ 1909.18. Fonctions et opérateurs de tableaux .............................................................................................. 1929.19. Fonctions et opérateurs sur les données de type range ...................................................................... 1959.20. Fonctions d'agrégat ................................................................................................................... 1969.21. Fonctions Window .................................................................................................................... 2009.22. Expressions de sous-requêtes ...................................................................................................... 2019.23. Comparaisons de lignes et de tableaux .......................................................................................... 2049.24. Fonctions retournant des ensembles ............................................................................................. 2069.25. Fonctions d'informations système ................................................................................................ 2089.26. Fonctions d'administration système .............................................................................................. 2169.27. Fonctions trigger ...................................................................................................................... 2279.28. Fonctions des triggers sur les événements ...................................................................................... 228

    10. Conversion de types .......................................................................................................................... 23010.1. Aperçu ................................................................................................................................... 23010.2. Opérateurs ............................................................................................................................... 23110.3. Fonctions ................................................................................................................................ 23310.4. Stockage de valeurs ................................................................................................................... 23610.5. Constructions UNION, CASE et constructions relatives .................................................................... 236

    11. Index .............................................................................................................................................. 23811.1. Introduction ............................................................................................................................. 23811.2. Types d'index ........................................................................................................................... 23811.3. Index multicolonnes .................................................................................................................. 24011.4. Index et ORDER BY .................................................................................................................. 24111.5. Combiner des index multiples ..................................................................................................... 24111.6. Index d'unicité ......................................................................................................................... 24211.7. Index d'expressions ................................................................................................................... 24211.8. Index partiels ........................................................................................................................... 243

    Documentation PostgreSQL 9.3.1

    iv

  • 11.9. Classes et familles d'opérateurs ................................................................................................... 24511.10. Index et collationnements ......................................................................................................... 24611.11. Examiner l'utilisation des index ................................................................................................. 246

    12. Recherche plein texte ......................................................................................................................... 24812.1. Introduction ............................................................................................................................. 24812.2. Tables et index ......................................................................................................................... 25012.3. Contrôler la recherche plein texte ................................................................................................. 25212.4. Fonctionnalités supplémentaires .................................................................................................. 25712.5. Analyseurs .............................................................................................................................. 26112.6. Dictionnaires ........................................................................................................................... 26212.7. Exemple de configuration ........................................................................................................... 26912.8. Tester et déboguer la recherche plein texte ..................................................................................... 27012.9. Types d'index GiST et GIN ........................................................................................................ 27312.10. Support de psql ....................................................................................................................... 27412.11. Limites ................................................................................................................................. 27612.12. Migration à partir d'une recherche plein texte antérieure à 8.3 .......................................................... 276

    13. Contrôle d'accès simultané .................................................................................................................. 27813.1. Introduction ............................................................................................................................. 27813.2. Isolation des transactions ........................................................................................................... 27813.3. Verrouillage explicite ................................................................................................................ 28213.4. Vérification de cohérence des données au niveau de l'application ....................................................... 28613.5. Verrous et index ....................................................................................................................... 287

    14. Conseils sur les performances .............................................................................................................. 28814.1. Utiliser EXPLAIN ................................................................................................................... 28814.2. Statistiques utilisées par le planificateur ........................................................................................ 29614.3. Contrôler le planificateur avec des clauses JOIN explicites .............................................................. 29714.4. Remplir une base de données ...................................................................................................... 29914.5. Configuration avec une perte acceptée .......................................................................................... 301

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

    15.1. Version courte ......................................................................................................................... 30315.2. Prérequis ................................................................................................................................. 30315.3. Obtenir les sources .................................................................................................................... 30515.4. Procédure d'installation .............................................................................................................. 30515.5. Initialisation post-installation ...................................................................................................... 31215.6. Démarrer ................................................................................................................................ 31315.7. Et maintenant ? ........................................................................................................................ 31415.8. Plateformes supportées .............................................................................................................. 31415.9. Notes spécifiques à des plateformes ............................................................................................. 315

    16. Installation à partir du code source sur Windows™ .................................................................................. 32316.1. Construire avec Visual C++™ ou le Microsoft Windows SDK™ ....................................................... 32316.2. Construire libpq avec Visual C++™ ou Borland C++™ ................................................................... 327

    17. Configuration du serveur et mise en place .............................................................................................. 32817.1. Compte utilisateur PostgreSQL™ ................................................................................................ 32817.2. Créer un groupe de base de données ............................................................................................. 32817.3. Lancer le serveur de bases de données .......................................................................................... 32917.4. Gérer les ressources du noyau ..................................................................................................... 33117.5. Arrêter le serveur ...................................................................................................................... 33717.6. Mise à jour d'une instance PostgreSQL™ ...................................................................................... 33817.7. Empêcher l'usurpation de serveur ................................................................................................. 34017.8. Options de chiffrement .............................................................................................................. 34017.9. Connexions tcp/ip sécurisées avec ssl ........................................................................................... 34117.10. Connexions tcp/ip sécurisées avec des tunnels ssh tunnels ............................................................... 34317.11. Enregistrer le journal des événements sous Windows .................................................................... 344

    18. Configuration du serveur .................................................................................................................... 34518.1. Paramètres de configuration ........................................................................................................ 34518.2. Emplacement des fichiers ........................................................................................................... 34718.3. Connexions et authentification .................................................................................................... 34818.4. Consommation des ressources ..................................................................................................... 35118.5. Write Ahead Log ...................................................................................................................... 35518.6. Réplication .............................................................................................................................. 35918.7. Planification des requêtes ........................................................................................................... 36118.8. Remonter et tracer les erreurs ...................................................................................................... 365

    Documentation PostgreSQL 9.3.1

    v

  • 18.9. Statistiques d'exécution .............................................................................................................. 37218.10. Nettoyage (vacuum) automatique .............................................................................................. 37318.11. Valeurs par défaut des connexions client ..................................................................................... 37418.12. Gestion des verrous ................................................................................................................. 37918.13. Compatibilité de version et de plateforme .................................................................................... 38018.14. Gestion des erreurs .................................................................................................................. 38218.15. Options préconfigurées ............................................................................................................ 38218.16. Options personnalisées ............................................................................................................. 38318.17. Options pour les développeurs ................................................................................................... 38318.18. Options courtes ...................................................................................................................... 385

    19. Authentification du client ................................................................................................................... 38719.1. Le fichier pg_hba.conf ......................................................................................................... 38719.2. Correspondances d'utilisateurs .................................................................................................... 39219.3. Méthodes d'authentification ........................................................................................................ 39319.4. Problèmes d'authentification ....................................................................................................... 399

    20. Rôles de la base de données ................................................................................................................ 40120.1. Rôles de la base de données ........................................................................................................ 40120.2. Attributs des rôles ..................................................................................................................... 40120.3. Appartenance d'un rôle .............................................................................................................. 40220.4. Sécurité des fonctions et déclencheurs (triggers) ............................................................................. 404

    21. Administration des bases de données .................................................................................................... 40521.1. Aperçu ................................................................................................................................... 40521.2. Création d'une base de données ................................................................................................... 40521.3. Bases de données modèles .......................................................................................................... 40621.4. Configuration d'une base de données ............................................................................................ 40721.5. Détruire une base de données ...................................................................................................... 40721.6. Tablespaces ............................................................................................................................. 407

    22. Localisation ..................................................................................................................................... 40922.1. Support des locales ................................................................................................................... 40922.2. Support des collations ................................................................................................................ 41122.3. Support des jeux de caractères ..................................................................................................... 413

    23. Planifier les tâches de maintenance ....................................................................................................... 41823.1. Nettoyages réguliers .................................................................................................................. 41823.2. Ré-indexation régulière .............................................................................................................. 42323.3. Maintenance du fichier de traces .................................................................................................. 423

    24. Sauvegardes et restaurations ................................................................................................................ 42524.1. Sauvegarde SQL ...................................................................................................................... 42524.2. Sauvegarde de niveau système de fichiers ...................................................................................... 42724.3. Archivage continu et récupération d'un instantané (PITR) ................................................................. 428

    25. Haute disponibilité, répartition de charge et réplication ............................................................................. 43625.1. Comparaison de différentes solutions ........................................................................................... 43625.2. Serveurs de Standby par transfert de journaux ................................................................................ 43825.3. Bascule (Failover) .................................................................................................................... 44425.4. Méthode alternative pour le log shipping ....................................................................................... 44425.5. Hot Standby ............................................................................................................................ 446

    26. Configuration de la récupération .......................................................................................................... 45326.1. Paramètres de récupération de l'archive ......................................................................................... 45326.2. Paramètres de cible de récupération .............................................................................................. 45326.3. Paramètres de serveur de Standby ................................................................................................ 454

    27. Surveiller l'activité de la base de données ............................................................................................... 45627.1. Outils Unix standard ................................................................................................................. 45627.2. Le récupérateur de statistiques ..................................................................................................... 45727.3. Visualiser les verrous ................................................................................................................ 46727.4. Traces dynamiques ................................................................................................................... 468

    28. Surveiller l'utilisation des disques ......................................................................................................... 47628.1. Déterminer l'utilisation des disques .............................................................................................. 47628.2. Panne pour disque saturé ............................................................................................................ 477

    29. Fiabilité et journaux de transaction ....................................................................................................... 47829.1. Fiabilité .................................................................................................................................. 47829.2. Write-Ahead Logging (WAL) ..................................................................................................... 47929.3. Validation asynchrone (Asynchronous Commit) ............................................................................. 48029.4. Configuration des journaux de transaction ..................................................................................... 48129.5. Vue interne des journaux de transaction ........................................................................................ 483

    Documentation PostgreSQL 9.3.1

    vi

  • 30. Tests de régression ............................................................................................................................ 48530.1. Lancer les tests ......................................................................................................................... 48530.2. Évaluation des tests ................................................................................................................... 48730.3. Fichiers de comparaison de variants ............................................................................................. 48930.4. Examen de la couverture du test .................................................................................................. 489

    IV. Interfaces client ...................................................................................................................................... 49031. libpq - Bibliothèque C ........................................................................................................................ 491

    31.1. Fonctions de contrôle de connexion à la base de données .................................................................. 49131.2. Fonctions de statut de connexion ................................................................................................. 50031.3. Fonctions de commandes d'exécution ........................................................................................... 50331.4. Traitement des commandes asynchrones ....................................................................................... 51431.5. Récupérer le résultats des requêtes ligne par ligne ........................................................................... 51731.6. Annuler des requêtes en cours d'exécution ..................................................................................... 51831.7. Interface à chemin rapide ........................................................................................................... 51931.8. Notification asynchrone ............................................................................................................. 51931.9. Fonctions associées avec la commande COPY ............................................................................... 52031.10. Fonctions de contrôle ............................................................................................................... 52331.11. Fonctions diverses ................................................................................................................... 52431.12. Traitement des messages .......................................................................................................... 52631.13. Système d'événements ............................................................................................................. 52731.14. Variables d'environnement ........................................................................................................ 53231.15. Fichier de mots de passe ........................................................................................................... 53431.16. Fichier des connexions de service ............................................................................................... 53431.17. Recherches LDAP des paramètres de connexion ........................................................................... 53431.18. Support de SSL ...................................................................................................................... 53531.19. Comportement des programmes threadés ..................................................................................... 53831.20. Construire des applications avec libpq ......................................................................................... 53931.21. Exemples de programmes ......................................................................................................... 540

    32. Objets larges .................................................................................................................................... 54832.1. Introduction ............................................................................................................................. 54832.2. Fonctionnalités d'implémentation ................................................................................................. 54832.3. Interfaces client ........................................................................................................................ 54832.4. Fonctions du côté serveur ........................................................................................................... 55132.5. Programme d'exemple ............................................................................................................... 552

    33. ECPG SQL embarqué en C ................................................................................................................. 55633.1. Le Concept .............................................................................................................................. 55633.2. Gérer les Connexions à la Base de Données ................................................................................... 55633.3. Exécuter des Commandes SQL ................................................................................................... 55833.4. Utiliser des Variables Hôtes ........................................................................................................ 56033.5. SQL Dynamique ...................................................................................................................... 57233.6. Librairie pgtypes ...................................................................................................................... 57333.7. Utiliser les Zones de Descripteur ................................................................................................. 58433.8. Gestion des Erreurs ................................................................................................................... 59533.9. Directives de Préprocesseur ........................................................................................................ 60033.10. Traiter des Programmes en SQL Embarqué .................................................................................. 60133.11. Fonctions de la Librairie ........................................................................................................... 60233.12. Large Objects ......................................................................................................................... 60333.13. Applications C++ .................................................................................................................... 60433.14. Commandes SQL Embarquées .................................................................................................. 60733.15. Mode de Compatibilité Informix™ ............................................................................................. 62733.16. Fonctionnement Interne ............................................................................................................ 638

    34. Schéma d'information ........................................................................................................................ 64134.1. Le schéma ............................................................................................................................... 64134.2. Types de données ..................................................................................................................... 64134.3. information_schema_catalog_name ............................................................................... 64234.4. administrable_role_authorizations ........................................................................... 64234.5. applicable_roles ............................................................................................................. 64234.6. attributes ......................................................................................................................... 64234.7. character_sets ................................................................................................................. 64534.8. check_constraint_routine_usage ................................................................................. 64634.9. check_constraints ........................................................................................................... 64634.10. collations ........................................................................................................................ 64634.11. collation_character_set_applicability .................................................................. 647

    Documentation PostgreSQL 9.3.1

    vii

  • 34.12. column_domain_usage ...................................................................................................... 64734.13. column_options ................................................................................................................ 64834.14. column_privileges .......................................................................................................... 64834.15. column_udt_usage ............................................................................................................ 64834.16. columns .............................................................................................................................. 64934.17. constraint_column_usage .............................................................................................. 65234.18. constraint_table_usage ................................................................................................ 65234.19. data_type_privileges .................................................................................................... 65234.20. domain_constraints ........................................................................................................ 65334.21. domain_udt_usage ............................................................................................................ 65334.22. domains .............................................................................................................................. 65434.23. element_types .................................................................................................................. 65534.24. enabled_roles .................................................................................................................. 65734.25. foreign_data_wrapper_options .................................................................................... 65734.26. foreign_data_wrappers .................................................................................................. 65834.27. foreign_server_options ................................................................................................ 65834.28. foreign_servers .............................................................................................................. 65834.29. foreign_table_options .................................................................................................. 65934.30. foreign_tables ................................................................................................................ 65934.31. key_column_usage ............................................................................................................ 66034.32. parameters ........................................................................................................................ 66034.33. referential_constraints .............................................................................................. 66234.34. role_column_grants ........................................................................................................ 66234.35. role_routine_grants ...................................................................................................... 66234.36. role_table_grants .......................................................................................................... 66334.37. role_udt_grants .............................................................................................................. 66334.38. role_usage_grants .......................................................................................................... 66434.39. routine_privileges ........................................................................................................ 66434.40. routines ............................................................................................................................ 66534.41. schemata ............................................................................................................................ 66834.42. sequences .......................................................................................................................... 66934.43. sql_features .................................................................................................................... 66934.44. sql_implementation_info .............................................................................................. 67034.45. sql_languages .................................................................................................................. 67034.46. sql_packages .................................................................................................................... 67134.47. sql_parts .......................................................................................................................... 67134.48. sql_sizing ........................................................................................................................ 67134.49. sql_sizing_profiles ...................................................................................................... 67234.50. table_constraints .......................................................................................................... 67234.51. table_privileges ............................................................................................................ 67334.52. tables ................................................................................................................................ 67334.53. triggered_update_columns ............................................................................................ 67434.54. triggers ............................................................................................................................ 67434.55. udt_privileges ................................................................................................................ 67534.56. usage_privileges ............................................................................................................ 67634.57. user_defined_types ........................................................................................................ 67634.58. user_mapping_options .................................................................................................... 67834.59. user_mappings .................................................................................................................. 67834.60. view_column_usage .......................................................................................................... 67834.61. view_routine_usage ........................................................................................................ 67934.62. view_table_usage ............................................................................................................ 67934.63. views .................................................................................................................................. 680

    V. Programmation serveur ............................................................................................................................. 68135. Étendre SQL .................................................................................................................................... 682

    35.1. L'extensibilité .......................................................................................................................... 68235.2. Le système des types de PostgreSQL™ ......................................................................................... 68235.3. Fonctions utilisateur .................................................................................................................. 68335.4. Fonctions en langage de requêtes (SQL) ........................................................................................ 68435.5. Surcharge des fonctions ............................................................................................................. 69435.6. Catégories de volatilité des fonctions ............................................................................................ 69535.7. Fonctions en langage de procédures ............................................................................................. 69635.8. Fonctions internes ..................................................................................................................... 69635.9. Fonctions en langage C .............................................................................................................. 697

    Documentation PostgreSQL 9.3.1

    viii

  • 35.10. Agrégats utilisateur ................................................................................................................. 71535.11. Types utilisateur ..................................................................................................................... 71735.12. Opérateurs définis par l'utilisateur .............................................................................................. 72035.13. Informations sur l'optimisation d'un opérateur .............................................................................. 72035.14. Interfacer des extensions d'index ................................................................................................ 72335.15. Empaqueter des objets dans une extension ................................................................................... 73335.16. Outils de construction d'extension .............................................................................................. 738

    36. Déclencheurs (triggers) ...................................................................................................................... 74036.1. Aperçu du comportement des déclencheurs .................................................................................... 74036.2. Visibilité des modifications des données ....................................................................................... 74136.3. Écrire des fonctions déclencheurs en C ......................................................................................... 74236.4. Un exemple complet de trigger .................................................................................................... 744

    37. Déclencheurs (triggers) sur évènement .................................................................................................. 74737.1. Aperçu du fonctionnement des triggers sur évènement ..................................................................... 74737.2. Matrice de déclenchement des triggers sur évènement ...................................................................... 74737.3. Écrire des fonctions trigger sur événement en C .............................................................................. 75037.4. Un exemple complet de trigger sur événement ................................................................................ 750

    38. Système de règles .............................................................................................................................. 75238.1. Arbre de requêtes ..................................................................................................................... 75238.2. Vues et système de règles ........................................................................................................... 75338.3. Vues matérialisées .................................................................................................................... 75938.4. Règles sur insert, update et delete .............................................................................................. 76138.5. Règles et droits ........................................................................................................................ 76938.6. Règles et statut de commande ..................................................................................................... 77138.7. Règles contre déclencheurs ......................................................................................................... 771

    39. Langages de procédures ..................................................................................................................... 77439.1. Installation des langages de procédures ......................................................................................... 774

    40. PL/pgSQL - Langage de procédures SQL .............................................................................................. 77640.1. Aperçu ................................................................................................................................... 77640.2. Structure de PL/pgSQL .............................................................................................................. 77740.3. Déclarations ............................................................................................................................ 77840.4. Expressions ............................................................................................................................. 78240.5. Instructions de base ................................................................................................................... 78340.6. Structures de contrôle ................................................................................................................ 78840.7. Curseurs ................................................................................................................................. 79940.8. Erreurs et messages ................................................................................................................... 80340.9. Procédures trigger ..................................................................................................................... 80540.10. Les dessous de PL/pgSQL ........................................................................................................ 81140.11. Astuces pour développer en PL/pgSQL ....................................................................................... 81440.12. Portage d'Oracle™ PL/SQL ...................................................................................................... 815

    41. PL/Tcl - Langage de procédures Tcl ..................................................................................................... 82441.1. Aperçu ................................................................................................................................... 82441.2. Fonctions et arguments PL/Tcl .................................................................................................... 82441.3. Valeurs des données avec PL/Tcl ................................................................................................. 82541.4. Données globales avec PL/Tcl ..................................................................................................... 82541.5. Accès à la base de données depuis PL/Tcl ..................................................................................... 82641.6. Procédures pour déclencheurs en PL/Tcl ....................................................................................... 82741.7. Les modules et la commande unknown ....................................................................................... 82941.8. Noms de procédure Tcl .............................................................................................................. 829

    42. PL/Perl - Langage de procédures Perl .................................................................................................... 83042.1. Fonctions et arguments PL/Perl ................................................................................................... 83042.2. Valeurs en PL/Perl .................................................................................................................... 83342.3. Fonction incluses ...................................................................................................................... 83342.4. Valeurs globales dans PL/Perl ..................................................................................................... 83742.5. Niveaux de confiance de PL/Perl ................................................................................................. 83742.6. Déclencheurs PL/Perl ................................................................................................................ 83842.7. PL/Perl sous le capot ................................................................................................................. 839

    43. PL/Python - Langage de procédures Python ........................................................................................... 84143.1. Python 2 et Python 3 ................................................................................................................. 84143.2. Fonctions PL/Python ................................................................................................................. 84243.3. Valeur des données avec PL/Python ............................................................................................. 84343.4. Sharing Data ............................................................................................................................ 84743.5. Blocs de code anonymes ............................................................................................................ 847

    Documentation PostgreSQL 9.3.1

    ix

  • 43.6. Fonctions de déclencheurs .......................................................................................................... 84743.7. Accès à la base de données ......................................................................................................... 84843.8. Sous-transactions explicites ........................................................................................................ 85043.9. Fonctions outils ........................................................................................................................ 85243.10. Variables d'environnement ........................................................................................................ 852

    44. Interface de programmation serveur ...................................................................................................... 85444.1. Fonctions d'interface ................................................................................................................. 85444.2. Fonctions de support d'interface .................................................................................................. 88444.3. Gestion de la mémoire ............................................................................................................... 89244.4. Visibilité des modifications de données ......................................................................................... 90144.5. Exemples ................................................................................................................................ 901

    45. Processus en tâche de fond (background worker) ..................................................................................... 904VI. Référence .............................................................................................................................................. 906

    I. Commandes SQL ................................................................................................................................ 907ABORT ......................................................................................................................................... 908ALTER AGGREGATE ..................................................................................................................... 909ALTER COLLATION ...................................................................................................................... 910ALTER CONVERSION .................................................................................................................... 911ALTER DATABASE ....................................................................................................................... 912ALTER DEFAULT PRIVILEGES ...................................................................................................... 914ALTER DOMAIN ........................................................................................................................... 916ALTER EXTENSION ...................................................................................................................... 919ALTER EVENT TRIGGER ............................................................................................................... 922ALTER FOREIGN DATA WRAPPER ................................................................................................ 923ALTER FOREIGN TABLE ............................................................................................................... 925ALTER FUNCTION ........................................................................................................................ 928ALTER GROUP .............................................................................................................................. 930ALTER INDEX ............................................................................................................................... 931ALTER LANGUAGE ....................................................................................................................... 933ALTER LARGE OBJECT ................................................................................................................. 934ALTER MATERIALIZED VIEW ....................................................................................................... 935ALTER OPERATOR ........................................................................................................................ 937ALTER OPERATOR CLASS ............................................................................................................ 938ALTER OPERATOR FAMILY .......................................................................................................... 939ALTER ROLE ................................................................................................................................ 942ALTER RULE ................................................................................................................................ 945ALTER SCHEMA ........................................................................................................................... 946ALTER SEQUENCE ........................................................................................................................ 947ALTER SERVER ............................................................................................................................ 949ALTER TABLE .............................................................................................................................. 950ALTER TABLESPACE .................................................................................................................... 958ALTER TEXT SEARCH CONFIGURATION ...................................................................................... 959ALTER TEXT SEARCH DICTIONARY ............................................................................................. 961ALTER TEXT SEARCH PARSER ..................................................................................................... 963ALTER TEXT SEARCH TEMPLATE ................................................................................................ 964ALTER TRIGGER ........................................................................................................................... 965ALTER TYPE ................................................................................................................................. 966ALTER USER ................................................................................................................................. 969ALTER USER MAPPING ................................................................................................................. 970ALTER VIEW ................................................................................................................................ 971ANALYZE ..................................................................................................................................... 973BEGIN .......................................................................................................................................... 975CHECKPOINT ................................................................................................................................ 977CLOSE .......................................................................................................................................... 978CLUSTER ...................................................................................................................................... 979COMMENT .................................................................................................................................... 981COMMIT ....................................................................................................................................... 984COMMIT PREPARED ..................................................................................................................... 985COPY ............................................................................................................................................ 986CREATE AGGREGATE ................................................................................................................... 994CREATE CAST .............................................................................................................................. 997CREATE COLLATION .................................................................................................................. 1001CREATE CONVERSION ............................................................................................................... 1003

    Documentation PostgreSQL 9.3.1

    x

  • CREATE DATABASE ................................................................................................................... 1005CREATE DOMAIN ....................................................................................................................... 1007CREATE EVENT TRIGGER ........................................................................................................... 1009CREATE EXTENSION .................................................................................................................. 1011CREATE FOREIGN DATA WRAPPER ............................................................................................ 1013CREATE FOREIGN TABLE ........................................................................................................... 1015CREATE FUNCTION .................................................................................................................... 1017CREATE GROUP .......................................................................................................................... 1023CREATE INDEX ........................................................................................................................... 1024CREATE LANGUAGE .................................................................................................................. 1029CREATE MATERIALIZED VIEW ................................................................................................... 1032CREATE OPERATOR ................................................................................................................... 1033CREATE OPERATOR CLASS ........................................................................................................ 1035CREATE OPERATOR FAMILY ...................................................................................................... 1038CREATE ROLE ............................................................................................................................ 1039CREATE RULE ............................................................................................................................ 1042CREATE SCHEMA ....................................................................................................................... 1044CREATE SEQUENCE ................................................................................................................... 1046CREATE SERVER ........................................................................................................................ 1049CREATE TABLE .......................................................................................................................... 1051CREATE TABLE AS ..................................................................................................................... 1062CREATE TABLESPACE ................................................................................................................ 1064CREATE TEXT SEARCH CONFIGURATION .................................................................................. 1065CREATE TEXT SEARCH DICTIONARY ......................................................................................... 1066CREATE TEXT SEARCH PARSER ................................................................................................. 1067CREATE TEXT SEARCH TEMPLATE ............................................................................................ 1068CREATE TRIGGER ...................................................................................................................... 1069CREATE TYPE ............................................................................................................................. 1073CREATE USER ............................................................................................................................ 1080CREATE USER MAPPING ............................................................................................................. 1081CREATE VIEW ............................................................................................................................ 1082DEALLOCATE ............................................................................................................................. 1085DECLARE ................................................................................................................................... 1086DELETE ...................................................................................................................................... 1089DISCARD .................................................................................................................................... 1091DO .............................................................................................................................................. 1092DROP AGGREGATE ..................................................................................................................... 1093DROP CAST ................................................................................................................................ 1094DROP COLLATION ...................................................................................................................... 1095DROP CONVERSION ................................................................................................................... 1096DROP DATABASE ....................................................................................................................... 1097DROP DOMAIN ........................................................................................................................... 1098DROP EVENT TRIGGER ............................................................................................................... 1099DROP EXTENSION ...................................................................................................................... 1100DROP FOREIGN DATA WRAPPER ................................................................................................ 1101DROP FOREIGN TABLE ............................................................................................................... 1102DROP FUNCTION ........................................................................................................................ 1103DROP GROUP .............................................................................................................................. 1104DROP INDEX ............................................................................................................................... 1105DROP LANGUAGE ...................................................................................................................... 1106DROP MATERIALIZED VIEW ....................................................................................................... 1107DROP OPERATOR ....................................................................................................................... 1108DROP OPERATOR CLASS ............................................................................................................ 1109DROP OPERATOR FAMILY .......................................................................................................... 1110DROP OWNED ............................................................................................................................. 1111DROP ROLE ................................................................................................................................ 1112DROP RULE ................................................................................................................................ 1113DROP SCHEMA ........................................................................................................................... 1114DROP SEQUENCE ........................................................................................................................ 1115DROP SERVER ............................................................................................................................ 1116DROP TABLE .............................................................................................................................. 1117DROP TABLESPACE .................................................................................................................... 1118DROP TEXT SEARCH CONFIGURATION ...................................................................................... 1119

    Documentation PostgreSQL 9.3.1

    xi

  • DROP TEXT SEARCH DICTIONARY ............................................................................................. 1120DROP TEXT SEARCH PARSER ..................................................................................................... 1121DROP TEXT SEARCH TEMPLATE ................................................................................................ 1122DROP TRIGGER ........................................................................................................................... 1123DROP TYPE ................................................................................................................................. 1124DROP USER ................................................................................................................................ 1125DROP USER MAPPING ................................................................................................................. 1126DROP VIEW ................................................................................................................................ 1127END ............................................................................................................................................ 1128EXECUTE ................................................................................................................................... 1129EXPLAIN .................................................................................................................................... 1130FETCH ........................................................................................................................................ 1134GRANT ....................................................................................................................................... 1137INSERT ....................................................................................................................................... 1142LISTEN ....................................................................................................................................... 1145LOAD ......................................................................................................................................... 1146LOCK .......................................................................................................................................... 1147MOVE ......................................................................................................................................... 1149NOTIFY ...................................................................................................................................... 1151PREPARE .................................................................................................................................... 1153PREPARE TRANSACTION ............................................................................................................ 1155REASSIGN OWNED ..................................................................................................................... 1157REFRESH MATERIALIZED VIEW ................................................................................................. 1158REINDEX .................................................................................................................................... 1159RELEASE SAVEPOINT ................................................................................................................. 1161RESET ........................................................................................................................................ 1162REVOKE ..................................................................................................................................... 1163ROLLBACK ................................................................................................................................. 1166ROLLBACK PREPARED ............................................................................................................... 1167ROLLBACK TO SAVEPOINT ........................................................................................................ 1168SAVEPOINT ................................................................................................................................ 1170SECURITY LABEL ....................................................................................................................... 1171SELECT ...................................................................................................................................... 1173SELECT INTO .............................................................................................................................. 1188SET ............................................................................................................................................. 1190SET CONSTRAINTS ..................................................................................................................... 1192SET ROLE ................................................................................................................................... 1193SET SESSION AUTHORIZATION .................................................................................................. 1195SET TRANSACTION .................................................................................................................... 1196SHOW ......................................................................................................................................... 1198START TRANSACTION ................................................................................................................ 1200TRUNCATE ................................................................................................................................. 1201UNLISTEN .................................................................................................................................. 1203UPDATE ...................................................................................................................................... 1204VACUUM .................................................................................................................................... 1207VALUES ...................................................................................................................................... 1210

    II. Applications client de PostgreSQL ...................................................................................................... 1212clusterdb ...................................................................................................................................... 1213createdb ....................................................................................................................................... 1215createlang ..................................................................................................................................... 1217createuser ..................................................................................................................................... 1219dropdb ....................................................................