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