SYSTEM_USER (Transact-SQL)
Permet, lorsqu'aucune valeur par défaut n'est spécifiée, d'insérer dans la table une valeur système à la place de la connexion actuelle.
Syntaxe
SYSTEM_USER
Type des valeurs renvoyées
nchar
Notes
Vous pouvez utiliser la fonction SYSTEM_USER avec des contraintes DEFAULT dans les instructions CREATE TABLE et ALTER TABLE. Vous pouvez aussi l'utiliser comme n'importe quelle fonction standard.
Si le nom d'utilisateur et le nom de connexion sont différents, SYSTEM_USER retourne le nom de connexion.
Si l'utilisateur actuel s'est connecté à SQL Server à l'aide de l'authentification Windows, SYSTEM_USER retourne le nom d'identification de la connexion Windows, sous la forme suivante : DOMAINE\nom_connexion_utilisateur. Toutefois, s'il s'est connecté à SQL Server à l'aide de l'authentification SQL Server, SYSTEM_USER retourne le nom d'identification de connexion, par exemple WillisJo si l'utilisateur s'est connecté en tant que WillisJo.
SYSTEM_USER retourne le nom du contexte qui s'exécute actuellement. Si l'instruction EXECUTE AS a été utilisée pour changer de contexte, SYSTEM_USER retourne le nom du contexte emprunté.
Exemples
A. Utilisation de SYSTEM_USER pour retourner le nom d'utilisateur système actuel
L'exemple suivant déclare une variable char, stocke la valeur actuelle de SYSTEM_USER dans la variable, puis imprime la valeur stockée dans la variable.
DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO
Voici l'ensemble des résultats.
----------------------------------------------------------
The current system user is: WillisJo
(1 row(s) affected)
B. Utilisation de SYSTEM_USER avec les contraintes DEFAULT
L'exemple suivant crée une table avec SYSTEM_USER en tant que contrainte DEFAULT pour la colonne SRep_tracking_user.
USE AdventureWorks2008R2;
GO
CREATE TABLE Sales_Tracking
(
Territory_id int IDENTITY(2000, 1) NOT NULL,
Rep_id int NOT NULL,
Last_sale datetime NOT NULL DEFAULT GETDATE(),
SRep_tracking_user varchar(30) NOT NULL DEFAULT SYSTEM_USER
)
GO
INSERT Sales_Tracking (Rep_id)
VALUES (151)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '5/15/98')
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '6/20/98')
INSERT Sales_Tracking (Rep_id)
VALUES (21392)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '11/03/98')
GO
La requête suivante permet de sélectionner toutes les informations de la table Sales_Tracking :
SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO
Voici l'ensemble des résultats.
Territory_id Rep_id Last_sale SRep_tracking_user
----------- ----- -------------------- ------------------
2000 151 Mar 4 1998 10:36AM ArvinDak
2001 293 May 15 1998 12:00AM ArvinDak
2003 21392 Mar 4 1998 10:36AM ArvinDak
2004 24283 Nov 3 1998 12:00AM ArvinDak
2002 27882 Jun 20 1998 12:00AM ArvinDak
(5 row(s) affected)
Voir aussi