sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan afbrydes udførelsen af ​​en erklæring i PostgreSQL

PostgreSQL indeholder tre funktioner, der giver dig mulighed for at forsinke udførelsen af ​​serverprocessen. udførelsen af ​​en erklæring.

Med andre ord kan du køre en erklæring og få den til at pause halvvejs igennem, før du fortsætter på sin lystige vej.

De tre funktioner er:

  • pg_sleep()
  • pg_sleep_for()
  • pg_sleep_until()

Disse er alle meget ens, men de fungerer på lidt forskellige måder.

Nedenfor er eksempler på hver enkelt.

Eksempel – pg_sleep()

pg_sleep() funktionen får den aktuelle sessions proces til at sove, indtil der er gået et bestemt antal sekunder.

Du angiver sekunderne som et argument. Argumentet er en værdi af dobbelt præcision , så du kan give brøkdele af sekunder, hvis det kræves.

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

Resultat (ved hjælp af lodret output):

clock_timestamp | 2020-06-28 16:18:25.645814+10
pg_sleep        |
clock_timestamp | 2020-06-28 16:18:26.706998+10
pg_sleep        |
clock_timestamp | 2020-06-28 16:18:27.768604+10

Eksempel – pg_sleep_for()

pg_sleep_for() funktion er en bekvemmelighedsfunktion til større søvntider angivet som et interval.

SELECT 
  clock_timestamp(),
  pg_sleep_for('2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('1 minute 5 seconds'),
  clock_timestamp();

Resultat (ved hjælp af lodret output):

clock_timestamp | 2020-06-28 16:20:04.218295+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 16:22:14.222907+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 16:23:19.294483+10

Eksempel – pg_sleep_until()

pg_sleep_until() funktion er en bekvemmelighedsfunktion bekvemmelighedsfunktion til når der ønskes et bestemt vækketidspunkt.

SELECT 
  clock_timestamp(),
  pg_sleep_until('today 16:25:15.1234'),
  clock_timestamp();

Resultat (ved hjælp af lodret output):

clock_timestamp | 2020-06-28 16:24:28.900319+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 16:25:15.184042+10

Forsinkelsens præcision

Når du bruger disse funktioner, kan den faktiske tidsforsinkelse variere fra den angivne tid afhængigt af serverens aktivitetsniveau. Søvnforsinkelsen vil dog være mindst så lang som angivet.

Især pg_sleep_until er ikke garanteret at vågne præcist på det angivne tidspunkt, men det vil ikke vågne tidligere.


  1. MySql Count kan ikke vise 0 værdier

  2. Vedhæftede filer i Oracle Applications R12

  3. Microsoft Access Tips og tricks Del 2 – Formularer

  4. Er det muligt at angive parametre for tabel- eller kolonnenavn i Prepared Statements eller QueryRunner.update()?