SYSTEM_USER (Transact-SQL)

当未指定默认值时,允许将系统为当前登录提供的值插入表中。

主题链接图标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)