SYSTEM_USER (Transact-SQL)
如果未指定預設值,則可將系統提供的目前登入值插入資料表中。
語法
SYSTEM_USER
傳回類型
nchar
備註
您可以在 CREATE TABLE 和 ALTER TABLE 陳述式中,搭配 DEFAULT 條件約束使用 SYSTEM_USER 函數。您也可以把它當作任何標準函數使用。
如果使用者名稱和登入名稱不同,SYSTEM_USER 便會傳回登入名稱。
如果目前使用者是利用 Windows 驗證登入 SQL Server,SYSTEM_USER 便會傳回格式為 DOMAIN\user_login_name 的 Windows 登入識別名稱。不過,如果目前使用者是利用 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. 搭配 DEFAULT 條件約束來使用 SYSTEM_USER
下列範例會建立一份資料表,將 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)