PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wstrzymać wykonywanie instrukcji w PostgreSQL

PostgreSQL zawiera trzy funkcje, które pozwalają opóźnić wykonanie procesu serwera. wykonanie oświadczenia.

Innymi słowy, możesz uruchomić oświadczenie i zatrzymać je w połowie, zanim przejdziesz dalej.

Te trzy funkcje to:

  • pg_sleep()
  • pg_sleep_for()
  • pg_sleep_until()

Wszystkie są bardzo podobne, ale działają w nieco inny sposób.

Poniżej znajdują się przykłady każdego z nich.

Przykład – pg_sleep()

pg_sleep() funkcja uśpi proces bieżącej sesji, dopóki nie minie określona liczba sekund.

Określasz sekundy jako argument. Argument jest wartością podwójnej precyzji , więc w razie potrzeby możesz podać ułamki sekund.

\x
SELECT 
  clock_timestamp(),
  pg_sleep(1),
  clock_timestamp(),
  pg_sleep(1),
  clock_timestamp();

Wynik (przy użyciu wyjścia pionowego):

clock_timestamp | 2020-06-28 16:18:25.645814+10
pg_sleep        |
clock_timestamp | 2020-06-28 16:18:26.706998+10
pg_sleep        |
clock_timestamp | 2020-06-28 16:18:27.768604+10

Przykład – pg_sleep_for()

pg_sleep_for() funkcja jest wygodną funkcją dla dłuższych czasów snu określonych jako interwał.

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 16:20:04.218295+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 16:22:14.222907+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 16:23:19.294483+10

Przykład – pg_sleep_until()

pg_sleep_until() funkcja jest funkcją wygodną, ​​funkcją wygodną, ​​gdy wymagany jest określony czas budzenia.

SELECT 
  clock_timestamp(),
  pg_sleep_until('today 16:25:15.1234'),
  clock_timestamp();

Wynik (przy użyciu wyjścia pionowego):

clock_timestamp | 2020-06-28 16:24:28.900319+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 16:25:15.184042+10

Precyzja opóźnienia

Podczas korzystania z tych funkcji rzeczywiste opóźnienie może różnić się od czasu określonego w zależności od poziomu aktywności serwera. Jednak opóźnienie uśpienia będzie co najmniej tak długie, jak określono.

W szczególności pg_sleep_until nie gwarantuje, że obudzi się dokładnie o określonej godzinie, ale nie obudzi się wcześniej.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizuj znacznik czasu, gdy wiersz jest aktualizowany w PostgreSQL

  2. Zachowaj strefę czasową w typie PostgreSQL timestamptz

  3. Spłaszczyć zagregowane pary klucz/wartość z pola JSONB?

  4. Połącz się z bazą danych PostgreSQL w kontenerze Docker

  5. postgreSQL - psql \i :jak wykonać skrypt w podanej ścieżce