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.
-----------------------------------------------------------------------
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.
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)