En PostgreSQL, puede usar pg_sleep_for()
función para retrasar la ejecución durante un intervalo determinado.
Hace que el proceso de la sesión actual duerma hasta que haya transcurrido el intervalo especificado.
El retraso del sueño será al menos siempre que se especifique. Sin embargo, podría ser más largo dependiendo de factores como la carga del servidor, así como la resolución efectiva del intervalo de suspensión de su plataforma.
Sintaxis
La sintaxis es así:
pg_sleep_for(interval)
Donde interval
es un intervalo que especifica el intervalo antes de que continúe el proceso.
Ejemplo
Aquí hay un ejemplo para demostrar su 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 salida 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
Usé clock_timestamp()
en este ejemplo, porque cambia durante la ejecución de la declaración. Esto nos permite ver los valores actualizados a medida que avanza la declaración.
Usé la visualización expandida (a veces denominada "salida vertical") en este ejemplo para que sea más fácil ver el resultado.
Puede alternar la visualización expandida en psql usando \x
.
Valores negativos
Si proporciona un valor negativo, la sentencia se ejecutará inmediatamente.
SELECT
clock_timestamp(),
pg_sleep_for('-2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('-1 minute 5 seconds'),
clock_timestamp();
Resultado (usando salida 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