PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как pg_sleep() работи в PostgreSQL

В PostgreSQL можете да използвате pg_sleep() функция за забавяне на изпълнението за определен брой секунди.

Той кара процеса на текущата сесия да заспи, докато не изтече посоченият брой секунди. Работи подобно на sleep() на MySQL функция, както и waitfor на TSQL изявление в SQL Server.

pg_sleep() функцията приема двойна точност аргумент, така че можете да зададете и закъснения с част от секундата.

Забавянето на съня ще бъде най-малко стига да е посочено. Въпреки това, може да е по-дълго в зависимост от фактори като натоварване на сървъра, както и ефективната резолюция на вашата платформа на интервала на заспиване.

Синтаксис

Синтаксисът е доста прост:

pg_sleep(seconds)

Където seconds е сдвойна точност стойност, която определя колко секунди/частични секунди трябва да минат, преди процесът да продължи.

Пример

Ето пример за демонстриране на използването му.

\x
SELECT 
  clock_timestamp(),
  pg_sleep(1),
  clock_timestamp(),
  pg_sleep(1),
  clock_timestamp();

Резултат (с помощта на вертикален изход):

clock_timestamp | 2020-06-28 13:46:53.808072+10
pg_sleep        |
clock_timestamp | 2020-06-28 13:46:54.870423+10
pg_sleep        |
clock_timestamp | 2020-06-28 13:46:55.938278+10

Използвах clock_timestamp() в този пример, защото се променя по време на изпълнение на оператор. Това ни позволява да видим актуализираните стойности с напредването на изявлението.

Използвах разширен дисплей (понякога наричан „вертикален изход“) в този пример, за да улесня виждането на резултата.

Можете да превключвате разширеното показване в psql, като използвате \x .

Дробни секунди

Както споменахме, можете да посочите закъснения с част от секундата, ако е необходимо.

SELECT 
  clock_timestamp(),
  pg_sleep(.5),
  clock_timestamp(),
  pg_sleep(.5),
  clock_timestamp();

Резултат (с помощта на вертикален изход):

clock_timestamp | 2020-06-28 15:03:52.496211+10
pg_sleep        |
clock_timestamp | 2020-06-28 15:03:53.041063+10
pg_sleep        |
clock_timestamp | 2020-06-28 15:03:53.553291+10

Отрицателни стойности

Отрицателните стойности няма да доведат до забавяне на изпълнението.

SELECT 
  clock_timestamp(),
  pg_sleep(-1),
  clock_timestamp(),
  pg_sleep(-1),
  clock_timestamp();

Резултат (с помощта на вертикален изход):

clock_timestamp | 2020-06-29 09:03:19.056681+10
pg_sleep        |
clock_timestamp | 2020-06-29 09:03:19.056682+10
pg_sleep        |
clock_timestamp | 2020-06-29 09:03:19.056683+10

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - как да върна редове с 0 броя за липсващи данни?

  2. Връщане на стойности на колона преди АКТУАЛИЗАЦИЯ, използвайки само SQL

  3. Получаване на грешка:Peer удостоверяването е неуспешно за потребител postgres, когато се опитва да накара pgsql да работи с релси

  4. postgreSQL - in vs any

  5. ГРЕШКА:няма уникално ограничение, съответстващо на дадени ключове за реферираната лента на таблицата