sql >> Databasteknik >  >> RDS >> MariaDB

Hur SLEEP() fungerar i MariaDB

I MariaDB, SLEEP() är en inbyggd funktion som vilar (pausar) under det antal sekunder som anges av dess argument.

Om den inte avbryts returnerar den 0 , om den avbryts returnerar den 1 .

Syntax

Syntaxen ser ut så här:

SLEEP(duration)

Där duration är antalet sekunder du vill att funktionen ska ligga i viloläge. Detta kan inkludera mikrosekunder.

Exempel 1

Här är ett exempel att visa:

SELECT SLEEP(3);

Resultat:

+----------+
| SLEEP(3) |
+----------+
|        0 |
+----------+
1 row in set (3.005 sec)

I det här fallet lyckades operationen utan avbrott, och så 0 returnerades.

Vi kan se att operationen tog 3,005 sekunder att slutföra (av vilka tre förmodligen orsakades av SLEEP() funktion).

Exempel 2

Här är ett annat exempel som använder SLEEP() mellan två andra funktionsanrop:

SELECT CURTIME();
SELECT SLEEP(3);
SELECT CURTIME();

Resultat:

MariaDB [PetHouse]> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 06:22:38  |
+-----------+
1 row in set (0.000 sec)

MariaDB [PetHouse]> SELECT SLEEP(3);
SELECT CURTIME();
+----------+
| SLEEP(3) |
+----------+
|        0 |
+----------+
1 row in set (3.006 sec)

MariaDB [PetHouse]> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 06:22:41  |
+-----------+
1 row in set (0.000 sec)

Mikrosekunder

Som nämnts kan du inkludera mikrosekunder:

SELECT CURTIME(6);
SELECT SLEEP(3.555555);
SELECT CURTIME(6);

Resultat:

MariaDB [PetHouse]> SELECT CURTIME(6);
+-----------------+
| CURTIME(6)      |
+-----------------+
| 06:25:41.010538 |
+-----------------+
1 row in set (0.000 sec)

MariaDB [PetHouse]> SELECT SLEEP(3.555555);
SELECT CURTIME(6);
+-----------------+
| SLEEP(3.555555) |
+-----------------+
|               0 |
+-----------------+
1 row in set (3.561 sec)

MariaDB [PetHouse]> SELECT CURTIME(6);
+-----------------+
| CURTIME(6)      |
+-----------------+
| 06:25:44.573544 |
+-----------------+
1 row in set (0.000 sec)

Nollargument

Anropar SLEEP() med null returnerar 0 utan paus:

SELECT SLEEP(null);

Resultat:

+-------------+
| SLEEP(null) |
+-------------+
|           0 |
+-------------+
1 row in set (0.000 sec)

Ogiltigt antal argument

Anropar SLEEP() utan argument, eller med fel antal argument, resulterar i ett fel:

SELECT SLEEP();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'

Och:

SELECT SLEEP(1, 2);

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'

Observera att satser som använder SLEEP() funktion är inte säkra för replikering.


  1. Kopiera tabellstruktur till ny tabell

  2. mysql-frågan visar flera tabeller från en ID-kolumn

  3. Få en lista över datum mellan två datum

  4. Hur påverkar IMUTABLE, STABLE och VOLATILA nyckelord funktionsbeteende?