CURRENT_USER (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
此函式會傳回目前使用者的名稱。 此函式相當於 USER_NAME()
。
語法
CURRENT_USER
傳回類型
sysname
備註
CURRENT_USER
會傳回目前安全性內容的名稱。 如果 CURRENT_USER
是在呼叫 EXECUTE AS
參數內容之後執行,CURRENT_USER
就會傳回模擬內容的名稱。 如果 Windows 主體利用群組中的成員資格來存取資料庫,則 CURRENT_USER
會傳回 Windows 主體名稱而非群組名稱。
請參閱 SUSER_NAME (Transact-SQL) 和 SYSTEM_USER (Transact-SQL),以了解如何傳回目前使用者的登入。
範例
A. 使用 CURRENT_USER 傳回目前使用者的名稱
此範例會傳回目前使用者的名稱。
SELECT CURRENT_USER;
GO
B. 使用 CURRENT_USER 做為 DEFAULT 條件約束
此範例會建立一份資料表,利用 CURRENT_USER
作為銷售資料列之 order_person
資料行的 DEFAULT
條件約束。
USE AdventureWorks2022;
GO
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'orders22')
DROP TABLE orders22;
GO
SET NOCOUNT ON;
CREATE TABLE orders22
(
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);
GO
此範例會在資料表中插入一筆記錄。 名為 Wanida
的使用者會執行這些陳述式。
INSERT orders22 (cust_id, order_amt)
VALUES (5105, 577.95);
GO
SET NOCOUNT OFF;
GO
此查詢會選取 orders22
資料表中的所有資訊。
SELECT * FROM orders22;
GO
結果集如下所示。
order_id cust_id order_date order_amt order_person
----------- ----------- -------------------- ------------ ------------
1000 5105 2005-04-03 23:34:00 577.95 Wanida
(1 row(s) affected)
C. 使用模擬內容的 CURRENT_USER
在此範例中,使用者 Wanida
會執行下列 Transact-SQL 程式碼,來模擬使用者 'Arnalfo'。
SELECT CURRENT_USER;
GO
EXECUTE AS USER = 'Arnalfo';
GO
SELECT CURRENT_USER;
GO
REVERT;
GO
SELECT CURRENT_USER;
GO
結果集如下所示。
Wanida
Arnalfo
Wanida
另請參閱
USER_NAME (Transact-SQL)
SYSTEM_USER (Transact-SQL)
sys.database_principals (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
系統函數 (Transact-SQL)