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 un principal Windows accède à la base de données du fait de son appartenance à un groupe, USER retourne le nom du principal 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 AdventureWorks2008R2;
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