I PostgreSQL kan du använda pg_sleep_for()
funktion för att fördröja exekvering under ett givet intervall.
Det gör att den aktuella sessionens process vilar tills det angivna intervallet har förflutit.
Sömnfördröjningen kommer att vara minst så länge som anges. Det kan dock vara längre beroende på faktorer som serverbelastning, såväl som din plattforms effektiva upplösning av vilointervallet.
Syntax
Syntaxen ser ut så här:
pg_sleep_for(interval)
Där interval
är ett intervall som anger intervallet innan processen fortsätter.
Exempel
Här är ett exempel för att demonstrera dess användning.
\x
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Resultat (med vertikal utdata):
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
Jag använde clock_timestamp()
i det här exemplet, eftersom det ändras under körning av programsatsen. Detta gör att vi kan se de uppdaterade värdena allt eftersom uttalandet fortskrider.
Jag använde utökad display (ibland kallad "vertical output") i det här exemplet för att göra det lättare att se resultatet.
Du kan växla utökad visning i psql genom att använda \x
.
Negativa värden
Om du anger ett negativt värde kommer satsen att köras omedelbart.
SELECT
clock_timestamp(),
pg_sleep_for('-2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('-1 minute 5 seconds'),
clock_timestamp();
Resultat (med vertikal utdata):
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