W PostgreSQL możesz użyć pg_sleep_for()
funkcja opóźniająca wykonanie o zadany interwał.
Powoduje uśpienie procesu bieżącej sesji, aż upłynie określony czas.
Opóźnienie snu wyniesie co najmniej tak długo, jak określono. Może to jednak być dłuższe w zależności od takich czynników, jak obciążenie serwera, a także efektywna rozdzielczość interwału uśpienia Twojej platformy.
Składnia
Składnia wygląda tak:
pg_sleep_for(interval)
Gdzie interval
to przedział, który określa przedział czasu przed kontynuowaniem procesu.
Przykład
Oto przykład demonstrujący jego użycie.
\x
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Wynik (przy użyciu wyjścia pionowego):
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
Użyłem clock_timestamp()
w tym przykładzie, ponieważ zmienia się podczas wykonywania instrukcji. Dzięki temu możemy zobaczyć zaktualizowane wartości w miarę postępów w instrukcji.
Użyłem rozszerzonego wyświetlania (czasami określanego jako „wyjście pionowe”) w tym przykładzie, aby ułatwić zobaczenie wyniku.
Możesz przełączać rozszerzone wyświetlanie w psql za pomocą \x
.
Wartości ujemne
Podanie wartości ujemnej spowoduje natychmiastowe uruchomienie instrukcji.
SELECT
clock_timestamp(),
pg_sleep_for('-2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('-1 minute 5 seconds'),
clock_timestamp();
Wynik (przy użyciu wyjścia pionowego):
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