SYSTEM_USER (Transact-SQL)
当未指定默认值时,允许将系统为当前登录提供的值插入表中。
语法
SYSTEM_USER
返回类型
nchar
注释
您可以在 CREATE TABLE 和 ALTER TABLE 语句中将 SYSTEM_USER 函数与 DEFAULT 约束一起使用。还可以将此函数用作任意标准函数。
如果用户名与登录名不同,则 SYSTEM_USER 返回登录名。
如果当前用户使用 Windows 身份验证登录到 SQL Server,则 SYSTEM_USER 返回如下形式的 Windows 登录标识名称:DOMAIN\user_login_name。但是,如果当前用户使用 SQL Server 身份验证登录到 SQL Server,则 SYSTEM_USER 返回 SQL Server 登录标识名称,例如为以 WillisJo 登录的用户返回 WillisJo。
SYSTEM_USER 返回当前执行的上下文的名称。如果已使用 EXECUTE AS 语句进行上下文切换,则 SYSTEM_USER 将返回模拟的上下文的名称。
示例
A. 使用 SYSTEM_USER 返回当前系统用户名
以下示例声明变量 char,在该变量中存储 SYSTEM_USER 的当前值,然后打印该变量中存储的值。
DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO
下面是结果集。
----------------------------------------------------------
The current system user is: WillisJo
(1 row(s) affected)
B. 将 SYSTEM_USER 与 DEFAULT 约束一起使用
以下示例创建一个表,其中 SYSTEM_USER 作为 SRep_tracking_user 列的 DEFAULT 约束。
USE AdventureWorks;
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
以下查询选择 Sales_Tracking 表中的全部信息:
SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO
下面是结果集。
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)