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)
Où 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