13 points par xguru 2021-11-10 | 4 commentaires | Partager sur WhatsApp
  • Savoir combien de lignes ont été modifiées/ajoutées lors d’un Insert on Conflict (Upsert) : xmax

  • Accorder des permissions sur une colonne spécifique

  • Correspondance multi-motifs : SIMILAR TO ou expression régulière ~

  • Connaître la valeur actuelle d’une séquence sans l’incrémenter : pg_sequence_last_value()

  • Pour utiliser ensemble du SQL multiligne et \COPY : TEMPORARY VIEW ou COPY avec \g

  • Empêcher l’affectation d’une valeur à une clé générée automatiquement : spécifier GENERATED ALWAYS lors de la création de la table (au lieu de GENERATED BY DEFAULT)

  • Créer une table pivot : utiliser pandas.pivot_table, \crosstabview ou l’extension tablefunc

  • Dollar Quoting

→ tous les caractères entre $$ et $$ sont interprétés comme une chaîne

→ il est possible d’utiliser un tag à l’intérieur, comme $JSON$ / $function$

→ en ajoutant ::jsonb, on peut créer rapidement un objet jsonb

  • Ajouter des commentaires aux objets de la base : COMMENT ON TABLE/COLUMN, et avec le Dollar Quoting il est aussi possible d’ajouter de longues descriptions sous forme de chaîne

→ écriture : COMMENT ON TABLE sale IS 'Sales made in the system';

→ affichage : \d+ sale

  • Enregistrer l’historique séparément pour chaque base

\set HISTFILE ~/.psql_history- :DBNAME

  • Mettre l’autocomplétion en majuscules : \set COMP_KEYWORD_CASE upper

  • Introduire une pause : pg_sleep(secondes), pg_sleep_for('4 minutes 14 seconds')

  • Récupérer la première/dernière ligne d’un groupe sans sous-requête : DISTINCT ON (colonne_du_groupe)

  • Générer un UUID sans l’extension uuid-ossp : gen_random_uuid() génère un UUID version 4

  • Générer des données aléatoires reproductibles : utiliser la même graine avec setseed()

  • Ajouter une contrainte sans valider immédiatement les données existantes : lors du ALTER, ajouter d’abord uniquement la contrainte avec NOT VALID, puis valider les données existantes séparément avec ALTER VALIDATE

  • Utiliser une fonctionnalité proche des Synonym d’Oracle : modifier search_path (utile pour les migrations sans interruption)

  • Trouver des plages qui se chevauchent : opérateur OVERLAPS

4 commentaires

 
galadbran 2021-11-11

Est-ce qu’il n’y a pas un peu trop de nouvelles sur PostgreSQL qui arrivent sur GeekNews ?! (Je plaisante.)

Notre produit utilise lui aussi principalement pg, donc nous ne pouvons qu’être reconnaissants. :)

 
xguru 2021-11-11

C’est parce que Postgres est très en vogue en ce moment..!?

 
nallwhy 2021-11-10

Postgres, c’est le meilleur.

 
roxie 2021-11-10

Je suis d'accord.