USER (Transact-SQL)

Permet d'insérer dans une table une valeur système si aucune valeur par défaut n'a été spécifiée pour le nom de l'utilisateur actuel.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

USER

Type des valeurs renvoyées

char

Notes

Cette instruction offre la même fonctionnalité que la fonction système USER_NAME.

Utilisez la fonction USER avec les contraintes DEFAULT dans les instructions CREATE TABLE ou ALTER TABLE, ou utilisez-la comme une fonction standard.

USER retourne toujours le nom du contexte en cours. Lorsqu'elle est appelée après une instruction EXECUTE AS, USER retourne le nom du contexte représenté.

Si une entité de sécurité Windows accède à la base de données du fait de son appartenance à un groupe, USER retourne le nom de l'entité de sécurité Windows au lieu du nom du groupe.

Exemples

A. Utilisation de USER pour retourner le nom d'utilisateur de la base de données

L'exemple suivant déclare une variable char, lui attribue la valeur actuelle de USER et l'imprime avec une description de texte.

DECLARE @usr char(30)
SET @usr = user
SELECT 'The current user''s database username is: '+ @usr
GO

Voici l'ensemble des résultats.

----------------------------------------------------------------------- 
The current user's database username is: dbo                            

(1 row(s) affected)

B. Utilisation de USER avec les contraintes DEFAULT

L'exemple suivant crée une table faisant appel à USER en tant que contrainte DEFAULT pour le vendeur d'une ligne ventes.

USE AdventureWorks;
GO
CREATE TABLE inventory22
(
 part_id int IDENTITY(100, 1) NOT NULL,
 description varchar(30) NOT NULL,
 entry_person varchar(30) NOT NULL DEFAULT USER 
)
GO
INSERT inventory22 (description)
VALUES ('Red pencil')
INSERT inventory22 (description)
VALUES ('Blue pencil')
INSERT inventory22 (description)
VALUES ('Green pencil')
INSERT inventory22 (description)
VALUES ('Black pencil')
INSERT inventory22 (description)
VALUES ('Yellow pencil')
GO

Voici la requête permettant de sélectionner toutes les informations de la table inventory22 :

SELECT * FROM inventory22 ORDER BY part_id;
GO

Voici le jeu de résultats (remarquez la valeur entry-person) :

part_id     description                    entry_person                   
----------- ------------------------------ -------------------------
100         Red pencil                     dbo                            
101         Blue pencil                    dbo                            
102         Green pencil                   dbo                            
103         Black pencil                   dbo                            
104         Yellow pencil                  dbo                            

(5 row(s) affected)

C. Utilisation de USER avec EXECUTE AS

L'exemple suivant montre le comportement de USER quand cette instruction est appelée à l'intérieur d'une session représentée.

SELECT USER;
GO
EXECUTE AS USER = 'Mario';
GO
SELECT USER;
GO
REVERT;
GO
SELECT USER;
GO

Voici l'ensemble des résultats.

DBO
Mario
DBO