In PostgreSQL, puoi usare pg_sleep_for()
funzione per ritardare l'esecuzione per un determinato intervallo.
Sospende il processo della sessione corrente fino allo scadere dell'intervallo specificato.
Il ritardo del sonno sarà almeno finchè specificato. Tuttavia, potrebbe essere più lungo a seconda di fattori quali il carico del server e la risoluzione effettiva dell'intervallo di sospensione da parte della tua piattaforma.
Sintassi
La sintassi è questa:
pg_sleep_for(interval)
Dove interval
è un intervallo che specifica l'intervallo prima che il processo continui.
Esempio
Ecco un esempio per dimostrarne l'utilizzo.
\x
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Risultato (usando l'output 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
Ho usato clock_timestamp()
in questo esempio, perché cambia durante l'esecuzione dell'istruzione. Questo ci permette di vedere i valori aggiornati man mano che l'istruzione avanza.
In questo esempio ho utilizzato la visualizzazione estesa (a volte indicata come "output verticale") per rendere più semplice la visualizzazione del risultato.
Puoi attivare la visualizzazione espansa in psql usando \x
.
Valori negativi
Fornire un valore negativo comporterà l'esecuzione immediata dell'estratto conto.
SELECT
clock_timestamp(),
pg_sleep_for('-2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('-1 minute 5 seconds'),
clock_timestamp();
Risultato (usando l'output 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