sql >> Databáze >  >> RDS >> PostgreSQL

Jak pozastavit provádění příkazu v PostgreSQL

PostgreSQL obsahuje tři funkce, které vám umožní zpozdit provedení serverového procesu. provedení výpisu.

Jinými slovy, můžete spustit příkaz a nechat jej v polovině pozastavit, než budete pokračovat ve své veselé cestě.

Tyto tři funkce jsou:

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

Všechny jsou velmi podobné, ale fungují trochu odlišnými způsoby.

Níže jsou uvedeny příklady každého z nich.

Příklad – pg_sleep()

pg_sleep() funkce uspí proces aktuální relace, dokud neuplyne zadaný počet sekund.

Jako argument zadáte sekundy. Argument je hodnota dvojité přesnosti , takže v případě potřeby můžete zadat zlomky sekund.

\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 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

Příklad – pg_sleep_for()

pg_sleep_for() funkce je pohodlná funkce pro delší doby spánku specifikované jako interval.

SELECT 
  clock_timestamp(),
  pg_sleep_for('2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('1 minute 5 seconds'),
  clock_timestamp();

Výsledek (při použití vertikálního výstupu):

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

Příklad – pg_sleep_until()

pg_sleep_until() funkce je komfortní funkce pro případ, že je požadována konkrétní doba buzení.

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

Výsledek (při použití vertikálního výstupu):

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

Přesnost zpoždění

Při použití těchto funkcí se skutečné časové zpoždění může lišit od zadaného času v závislosti na úrovni aktivity serveru. Zpoždění spánku však bude alespoň tak dlouhé, jak je uvedeno.

Konkrétně pg_sleep_until není zaručeno, že se probudí přesně v určený čas, ale neprobudí se dříve.


  1. Nelze nainstalovat pg gem na Mountain Lion

  2. Podporuje Postgres vnořené nebo autonomní transakce?

  3. Parametry připojovacího řetězce pro zdroje dat aplikace Excel

  4. Získání výsledku dynamického SQL do proměnné pro sql-server