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 AdventureWorks2012;
GO
CREATE TABLE Sales.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.Sales_Tracking (Rep_id)
VALUES (151);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '19980515');
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '19980620');
INSERT Sales.Sales_Tracking (Rep_id)
VALUES (21392);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '19981130');
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)