In PostgreSQL können Sie den pg_sleep_for()
verwenden Funktion, um die Ausführung für ein bestimmtes Intervall zu verzögern.
Es versetzt den Prozess der aktuellen Sitzung in den Ruhezustand, bis das angegebene Intervall abgelaufen ist.
Die Schlafverzögerung beträgt mindestens solange wie angegeben. Abhängig von Faktoren wie der Serverlast sowie der effektiven Auflösung des Ruheintervalls auf Ihrer Plattform kann es jedoch länger dauern.
Syntax
Die Syntax lautet wie folgt:
pg_sleep_for(interval)
Wobei interval
ist ein Intervall, das das Intervall angibt, bevor der Prozess fortgesetzt wird.
Beispiel
Hier ist ein Beispiel, um die Verwendung zu demonstrieren.
\x
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Ergebnis (bei vertikaler Ausgabe):
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
Ich habe clock_timestamp()
verwendet in diesem Beispiel, weil es sich während der Anweisungsausführung ändert. Dadurch können wir die aktualisierten Werte sehen, während die Anweisung fortschreitet.
Ich habe in diesem Beispiel die erweiterte Anzeige (manchmal auch als „vertikale Ausgabe“ bezeichnet) verwendet, um das Ergebnis besser sichtbar zu machen.
Sie können die erweiterte Anzeige in psql umschalten, indem Sie \x
verwenden .
Negative Werte
Die Angabe eines negativen Werts führt dazu, dass die Anweisung sofort ausgeführt wird.
SELECT
clock_timestamp(),
pg_sleep_for('-2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('-1 minute 5 seconds'),
clock_timestamp();
Ergebnis (bei vertikaler Ausgabe):
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