В PostgreSQL можете да използвате pg_sleep_for()
функция за забавяне на изпълнението за даден интервал.
Той прави процеса на текущата сесия заспиващ, докато не изтече посоченият интервал.
Забавянето на съня ще бъде най-малко стига да е посочено. Въпреки това, може да е по-дълго в зависимост от фактори като натоварване на сървъра, както и ефективната резолюция на вашата платформа на интервала на заспиване.
Синтаксис
Синтаксисът е така:
pg_sleep_for(interval)
Където interval
е интервал, който определя интервала преди процесът да продължи.
Пример
Ето пример за демонстриране на използването му.
\x
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Резултат (с помощта на вертикален изход):
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
Използвах clock_timestamp()
в този пример, защото се променя по време на изпълнение на оператор. Това ни позволява да видим актуализираните стойности с напредването на изявлението.
Използвах разширен дисплей (понякога наричан „вертикален изход“) в този пример, за да улесня виждането на резултата.
Можете да превключвате разширеното показване в psql, като използвате \x
.
Отрицателни стойности
Предоставянето на отрицателна стойност ще доведе до незабавно изпълнение на оператора.
SELECT
clock_timestamp(),
pg_sleep_for('-2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('-1 minute 5 seconds'),
clock_timestamp();
Резултат (с помощта на вертикален изход):
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