USER (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统(PDW)Microsoft Fabric中的SQL数据库

当未指定默认值时,允许将系统为当前用户的数据库用户名提供的值插入表内。

Transact-SQL 语法约定

语法

USER  

返回类型

nvarchar(128)

注解

USER 提供与USER_NAME系统功能相同的功能。

在 USER or ALTER TABLE 语句中使用DEFAULT约束CREATE TABLE,或者作为任何标准函数使用。

USER 总是返回当前上下文的名称。 在语 EXECUTE AS 句后调用时,返回 USER 被模拟的上下文名称。

如果 Windows 主体通过成员身份访问数据库,返回USER的是 Windows 主体的名称,而非组的名称。

示例

A. 使用 USER 返回数据库用户名

以下示例声明变量为 char,赋予其当前值 USER ,然后打印该变量并附带文本描述。

DECLARE @usr CHAR(30)  
SET @usr = user  
SELECT 'The current user''s database username is: '+ @usr  
GO  

结果集如下。

-----------------------------------------------------------------------  
The current user's database username is: dbo  
 
(1 row(s) affected)

B. 使用 USER 约束 DEFAULT 条件

以下示例生成一个表,将 USER 用作销售行的销售员的 DEFAULT 约束。

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  

下面是从表 inventory22 中选择所有信息的查询:

SELECT * FROM inventory22 ORDER BY part_id;  
GO  

下面是结果集(注意 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. 结合使用USEREXECUTE AS

以下示例演示了 USER 在模拟会话内部被调用时的行为。

SELECT USER;  
GO  
EXECUTE AS USER = 'Mario';  
GO  
SELECT USER;  
GO  
REVERT;  
GO  
SELECT USER;  
GO  

结果集如下。

DBO
Mario
DBO

另请参阅

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP(Transact-SQL)
CURRENT_USER(Transact-SQL)
安全函数 (Transact-SQL)
SESSION_USER(Transact-SQL)
SYSTEM_USER(Transact-SQL)
USER_NAME(Transact-SQL)