Partager via


USER (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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.

Conventions de la syntaxe Transact-SQL

Syntaxe

USER  

Types de retour

nvarchar(128)

Remarques

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

R. 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 le jeu de résultats obtenu.

-----------------------------------------------------------------------  
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 AdventureWorks2022;  
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 le jeu de résultats obtenu.

DBO
Mario
DBO

Voir aussi

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
Fonctions de sécurité (Transact-SQL)
SESSION_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
USER_NAME (Transact-SQL)