Par défaut, si rien n'est précisé, ce sont les variables de session qui sont affichées.
Variables système n'existant qu'à un niveau
Il existe un certain nombre de variables pour lequel le niveau global n'existe pas. Ces variables sont initialisées au début de la
connexion, et leur modification ne peut affecter que la session en cours.
La variable système autocommit par exemple n'existe que pour la session. De même que last_insert_id , ce qui est logique :
LAST_INSERT_ID() renvoie la valeur de la dernière auto-incrémentation réalisée par la session. Cela n'a donc pas de sens
d'avoir cette variable à un niveau global.
De même, certaines variables système n'ont pas de sens au niveau de la session et n'y existent donc pas. C'est le cas par exemple
de la variable max_connections, qui détermine le nombre maximum de sessions connectées simultanément au serveur.
Pour ces variables, le comportement de la commande SHOW VARIABLES diffère du comportement de la commande SELECT
@@nom_variable.
Si vous ne précisez pas le niveau voulu avec SHOW VARIABLES, vous aurez la valeur de la variable de session si elle
existe, sinon, la valeur au niveau global. SELECT agira de la même manière.
Si vous précisez un niveau, et qu'une des variables n'existe pas à ce niveau, SHOW donnera sa valeur à l'autre niveau
(sans prévenir).
Par contre, si vous précisez un niveau avec SELECT, et que la variable système n'y existe pas, une erreur est déclenchée.
Exemples : last_insert_id n'existe qu'au niveau de la session, max_connections n'existe qu'au niveau global.
Code : SQL
SHOW VARIABLES LIKE 'last_insert_id';
SHOW SESSION VARIABLES LIKE 'last_insert_id';
SHOW GLOBAL VARIABLES LIKE 'last_insert_id';
Ces trois requêtes donneront exactement le même résultat :
Variable_name Value
last_insert_id
0
Code : SQL
SHOW VARIABLES LIKE 'max_connections';
SHOW SESSION VARIABLES LIKE 'max_connections';
SHOW GLOBAL VARIABLES LIKE 'max_connections';
Variable_name Value
max_connections 151
Avec SELECT, si l'on ne précise pas le niveau, ou si l'on précise le bon niveau, le résultat est le même.
Code : SQL
SELECT @@max_connections AS max_connections, @@last_insert_id AS
last_insert_id;
SELECT @@GLOBAL.max_connections AS max_connections,
@@SESSION.last_insert_id AS last_insert_id;
Partie 7 : Gestion des utilisateurs et configuration du serveur
405/414
www.openclassrooms.com
Variables système n'existant qu'à un niveau
Il existe un certain nombre de variables pour lequel le niveau global n'existe pas. Ces variables sont initialisées au début de la
connexion, et leur modification ne peut affecter que la session en cours.
La variable système autocommit par exemple n'existe que pour la session. De même que last_insert_id , ce qui est logique :
LAST_INSERT_ID() renvoie la valeur de la dernière auto-incrémentation réalisée par la session. Cela n'a donc pas de sens
d'avoir cette variable à un niveau global.
De même, certaines variables système n'ont pas de sens au niveau de la session et n'y existent donc pas. C'est le cas par exemple
de la variable max_connections, qui détermine le nombre maximum de sessions connectées simultanément au serveur.
Pour ces variables, le comportement de la commande SHOW VARIABLES diffère du comportement de la commande SELECT
@@nom_variable.
Si vous ne précisez pas le niveau voulu avec SHOW VARIABLES, vous aurez la valeur de la variable de session si elle
existe, sinon, la valeur au niveau global. SELECT agira de la même manière.
Si vous précisez un niveau, et qu'une des variables n'existe pas à ce niveau, SHOW donnera sa valeur à l'autre niveau
(sans prévenir).
Par contre, si vous précisez un niveau avec SELECT, et que la variable système n'y existe pas, une erreur est déclenchée.
Exemples : last_insert_id n'existe qu'au niveau de la session, max_connections n'existe qu'au niveau global.
Code : SQL
SHOW VARIABLES LIKE 'last_insert_id';
SHOW SESSION VARIABLES LIKE 'last_insert_id';
SHOW GLOBAL VARIABLES LIKE 'last_insert_id';
Ces trois requêtes donneront exactement le même résultat :
Variable_name Value
last_insert_id
0
Code : SQL
SHOW VARIABLES LIKE 'max_connections';
SHOW SESSION VARIABLES LIKE 'max_connections';
SHOW GLOBAL VARIABLES LIKE 'max_connections';
Variable_name Value
max_connections 151
Avec SELECT, si l'on ne précise pas le niveau, ou si l'on précise le bon niveau, le résultat est le même.
Code : SQL
SELECT @@max_connections AS max_connections, @@last_insert_id AS
last_insert_id;
SELECT @@GLOBAL.max_connections AS max_connections,
@@SESSION.last_insert_id AS last_insert_id;
Partie 7 : Gestion des utilisateurs et configuration du serveur
405/414
www.openclassrooms.com
