V PostgreSQL můžete použít pg_sleep()
funkce pro zpoždění spuštění o daný počet sekund.
Přepne proces aktuální relace do režimu spánku, dokud neuplyne zadaný počet sekund. Funguje podobně jako sleep()
MySQL funkce a také waitfor
TSQL příkaz v SQL Server.
pg_sleep()
funkce přijímá dvojitou přesnost argument, takže můžete také zadat zpoždění ve zlomcích sekund.
Zpoždění spánku bude nejméně tak dlouho, jak je uvedeno. Může však být delší v závislosti na faktorech, jako je zatížení serveru a také efektivní rozlišení intervalu spánku vaší platformy.
Syntaxe
Syntaxe je poměrně jednoduchá:
pg_sleep(seconds)
Kde seconds
je dvojitá přesnost hodnota, která určuje, kolik sekund / zlomků sekund musí uplynout, než proces bude pokračovat.
Příklad
Zde je příklad, který demonstruje jeho použití.
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
Výsledek (při použití vertikálního výstupu):
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
Použil jsem clock_timestamp()
v tomto příkladu, protože se mění během provádění příkazu. To nám umožňuje vidět aktualizované hodnoty v průběhu příkazu.
V tomto příkladu jsem použil rozšířené zobrazení (někdy označované jako „vertikální výstup“), aby bylo snazší vidět výsledek.
Rozšířené zobrazení v psql můžete přepínat pomocí \x
.
Zlomkové sekundy
Jak již bylo zmíněno, v případě potřeby můžete zadat zpoždění ve zlomcích sekund.
SELECT
clock_timestamp(),
pg_sleep(.5),
clock_timestamp(),
pg_sleep(.5),
clock_timestamp();
Výsledek (při použití vertikálního výstupu):
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
Záporné hodnoty
Záporné hodnoty nebudou mít za následek žádné zpoždění při spuštění.
SELECT
clock_timestamp(),
pg_sleep(-1),
clock_timestamp(),
pg_sleep(-1),
clock_timestamp();
Výsledek (při použití vertikálního výstupu):
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