sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB SESSION_USER() Forklaret

I MariaDB, SESSION_USER() er et synonym for USER() fungere. Det returnerer det aktuelle MariaDB-brugernavn og værtsnavn, givet ved godkendelse til MariaDB.

Syntaks

Syntaksen ser sådan ud:

SESSION_USER()

Ingen argumenter er påkrævet eller accepteret.

Eksempel

Her er et eksempel til demonstration:

SELECT SESSION_USER();

Resultat:

+------------------+
| SESSION_USER()   |
+------------------+
| [email protected] |
+------------------+

SESSION_USER() vs CURRENT_USER()

Der er også en anden funktion kaldet CURRENT_USER() der gør noget lignende. Det returnerer dog ikke altid det samme resultat som SESSION_USER() .

For eksempel, hvis vi forbinder ved hjælp af anonymous :

mariadb --user="anonymous"

Kør derefter SESSION_USER() og CURRENT_USER() :

SELECT 
    SESSION_USER(),
    CURRENT_USER;

Resultat:

+---------------------+--------------+
| SESSION_USER()      | CURRENT_USER |
+---------------------+--------------+
| [email protected] | @localhost   |
+---------------------+--------------+

Men hvis vi hopper tilbage til vores forrige session (i det oprindelige terminalvindue), returnerer hver funktion de samme resultater:

SELECT 
    SESSION_USER(),
    CURRENT_USER;

Resultat:

+------------------+------------------+
| SESSION_USER()   | CURRENT_USER     |
+------------------+------------------+
| [email protected] | [email protected] |
+------------------+------------------+

Ingen argumenter accepteres

Sender eventuelle argumenter til SESSION_USER() resulterer i en fejl:

SELECT SESSION_USER(123);

Resultat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '123)' at line 1

Udsagn ved hjælp af SESSION_USER() funktion (eller USER() og SYSTEM_USER() ) er ikke sikre til replikering på sætningsniveau.


  1. Håndtering af transaktioner i MySQL

  2. PHP:Advarsel:sort() forventer, at parameter 1 er array, ressource givet

  3. Valg af flere max()-værdier ved hjælp af en enkelt SQL-sætning

  4. Hvorfor kan der kun være én TIMESTAMP-kolonne med CURRENT_TIMESTAMP i DEFAULT-sætning?