PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como o pg_sleep_for() funciona no PostgreSQL


No PostgreSQL, você pode usar o pg_sleep_for() função para atrasar a execução para um determinado intervalo.

Faz o processo da sessão atual dormir até que o intervalo especificado tenha decorrido.

O atraso do sono será pelo menos desde que especificado. No entanto, pode demorar mais dependendo de fatores como a carga do servidor, bem como a resolução efetiva da sua plataforma do intervalo de suspensão.

Sintaxe


A sintaxe fica assim:
pg_sleep_for(interval)

Onde interval é um intervalo que especifica o intervalo antes que o processo continue.

Exemplo


Aqui está um exemplo para demonstrar seu uso.
\x
SELECT 
  clock_timestamp(),
  pg_sleep_for('2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('1 minute 5 seconds'),
  clock_timestamp();

Resultado (usando saída vertical):
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

Eu usei clock_timestamp() neste exemplo, porque muda durante a execução da instrução. Isso nos permite ver os valores atualizados à medida que a instrução avança.

Usei a exibição expandida (às vezes chamada de “saída vertical”) neste exemplo para facilitar a visualização do resultado.

Você pode alternar a exibição expandida no psql usando \x .

Valores negativos


Fornecer um valor negativo resultará na execução imediata da instrução.
SELECT 
  clock_timestamp(),
  pg_sleep_for('-2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('-1 minute 5 seconds'),
  clock_timestamp();

Resultado (usando saída vertical):
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