PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment fonctionne pg_sleep_for() dans PostgreSQL

Dans PostgreSQL, vous pouvez utiliser le pg_sleep_for() fonction pour retarder l'exécution d'un intervalle donné.

Il met le processus de la session en cours en veille jusqu'à ce que l'intervalle spécifié se soit écoulé.

Le délai de veille sera au moins aussi longtemps que spécifié. Cependant, il peut être plus long en fonction de facteurs tels que la charge du serveur, ainsi que la résolution effective de l'intervalle de veille de votre plate-forme.

Syntaxe

La syntaxe ressemble à ceci :

pg_sleep_for(interval)

interval est un intervalle qui spécifie l'intervalle avant que le processus continue.

Exemple

Voici un exemple pour démontrer son utilisation.

\x
SELECT 
  clock_timestamp(),
  pg_sleep_for('2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('1 minute 5 seconds'),
  clock_timestamp();

Résultat (en utilisant la sortie verticale) :

clock_timestamp | 2020-06-28 15:14:26.53039+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 15:16:36.595837+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 15:17:41.671152+10

J'ai utilisé clock_timestamp() dans cet exemple, car il change pendant l'exécution de l'instruction. Cela nous permet de voir les valeurs mises à jour au fur et à mesure que l'instruction progresse.

J'ai utilisé l'affichage étendu (parfois appelé "sortie verticale") dans cet exemple afin de faciliter la visualisation du résultat.

Vous pouvez basculer l'affichage étendu dans psql en utilisant \x .

Valeurs négatives

Si vous fournissez une valeur négative, l'instruction s'exécutera immédiatement.

SELECT 
  clock_timestamp(),
  pg_sleep_for('-2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('-1 minute 5 seconds'),
  clock_timestamp();

Résultat (en utilisant la sortie verticale) :

clock_timestamp | 2020-06-29 09:01:09.468232+10
pg_sleep_for    |
clock_timestamp | 2020-06-29 09:01:09.468291+10
pg_sleep_for    |
clock_timestamp | 2020-06-29 09:01:09.468297+10