UID | Identificateur utilisateur |
|---|---|
| Oracle Database SQL | Oracle 9i Release 1 (version 9.0) ou supérieure |
Syntaxe
| uid |
Description
Cette fonction permet de retourner l'identificateur d'utilisateur de la session.
Remarques
- Fournit l'identifiant numérique de l'utilisateur Oracle connecté : La fonction UID renvoie un entier unique correspondant à l'identifiant interne de l'utilisateur Oracle actuellement connecté. Cet identifiant est attribué automatiquement lors de la création de l'utilisateur dans la base de données, et reste constant tant que l'utilisateur existe.
- Différent de USER ou SESSION_USER : Contrairement à USER retournant le nom de l'utilisateur sous forme de chaîne de caractères, UID renvoie un entier. Ce nombre est utilisé en interne par Oracle pour représenter les utilisateurs dans certaines vues ou métadonnées (comme dans ALL_OBJECTS ou USER_OBJECTS).
- Utilisable sans parenthèses, car c'est une fonction sans paramètre : UID est une fonction sans paramètre, donc elle peut s'utiliser sans parenthèses : on écrit simplement SELECT UID FROM DUAL;. C'est une particularité syntaxique autorisée par Oracle pour certaines fonctions internes comme SYSDATE, USER, UID,...
- Très utile pour les vérifications d'accès dans des déclencheurs ou procédures : Dans les déclencheurs de sécurité ou les STORED PROCEDURE, UID peut être utilisé pour déterminer qui a initié l'appel, afin d'adapter le comportement ou bloquer certaines actions en fonction de l'utilisateur en cours.
- Peut être utilisé pour relier des objets à leur propriétaire : Les vues systèmes comme ALL_OBJECTS ou DBA_OBJECTS contiennent une colonne OWNER#, correspondant à l'identifiant utilisateur. On peut comparer cette colonne avec le résultat de UID pour retrouver les objets appartenant à l'utilisateur courant.
- Valeur stable mais peu lisible sans correspondance avec USER$ : L'UID est utile pour les traitements automatisés, mais il est peu parlant en soi. Pour savoir à quel utilisateur correspond un UID donné, il faut consulter des vues comme SYS.USER$ (accessible uniquement avec des privilèges DBA), où chaque utilisateur est associé à son numéro.
- Ne pas confondre avec USERENV('SESSIONID') : UID renvoie l'identifiant du compte utilisateur, tandis que USERENV('SESSIONID') retourne l'identificateur de la session en cours. Ce sont deux notions différentes : la première est liée à l'utilisateur Oracle, la seconde à l'exécution d'une requête dans un contexte donné.
- Peut varier selon le schéma d'exécution dans les procédures compilées : Dans le cas de procédures définies avec des privilèges DEFINER ou INVOKER, la valeur de UID peut varier selon qui exécute le code. Cela permet d'écrire des procédures multi-utilisateurs s'adaptant dynamiquement en fonction de l'appelant, tout en conservant une logique centralisée.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015