Dans PostgreSQL, vous pouvez utiliser le pg_sleep()
fonction pour retarder l'exécution d'un nombre de secondes donné.
Il fait dormir le processus de la session en cours jusqu'à ce que le nombre de secondes spécifié se soit écoulé. Cela fonctionne de la même manière que sleep()
de MySQL fonction, ainsi que waitfor
de TSQL déclaration dans SQL Server.
Le pg_sleep()
la fonction accepte une double précision argument, vous pouvez donc également spécifier des délais d'une fraction de seconde.
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 est assez simple :
pg_sleep(seconds)
Où seconds
est une double précision valeur qui spécifie combien de secondes/fractions de secondes doivent s'écouler avant que le processus continue.
Exemple
Voici un exemple pour démontrer son utilisation.
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
Résultat (en utilisant la sortie verticale) :
clock_timestamp | 2020-06-28 13:46:53.808072+10 pg_sleep | clock_timestamp | 2020-06-28 13:46:54.870423+10 pg_sleep | clock_timestamp | 2020-06-28 13:46:55.938278+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
.
Fraction de seconde
Comme mentionné, vous pouvez spécifier des délais d'une fraction de seconde si nécessaire.
SELECT
clock_timestamp(),
pg_sleep(.5),
clock_timestamp(),
pg_sleep(.5),
clock_timestamp();
Résultat (en utilisant la sortie verticale) :
clock_timestamp | 2020-06-28 15:03:52.496211+10 pg_sleep | clock_timestamp | 2020-06-28 15:03:53.041063+10 pg_sleep | clock_timestamp | 2020-06-28 15:03:53.553291+10
Valeurs négatives
Les valeurs négatives n'entraîneront aucun retard d'exécution.
SELECT
clock_timestamp(),
pg_sleep(-1),
clock_timestamp(),
pg_sleep(-1),
clock_timestamp();
Résultat (en utilisant la sortie verticale) :
clock_timestamp | 2020-06-29 09:03:19.056681+10 pg_sleep | clock_timestamp | 2020-06-29 09:03:19.056682+10 pg_sleep | clock_timestamp | 2020-06-29 09:03:19.056683+10