SESSION_USER (Transact-SQL)
SQL Server 2005
SESSION_USER 會傳回目前資料庫中目前內容的使用者名稱。
A. 利用 SESSION_USER 傳回目前工作階段的使用者名稱
下列範例會宣告一個變數 nchar、指派 SESSION_USER 的目前值給該變數,然後將變數和文字描述一起列印出來。
DECLARE @session_usr nchar(30); SET @session_usr = SESSION_USER; SELECT 'This session''s current user is: '+ @session_usr; GO
這是當工作階段使用者是 Surya 的結果集:
-------------------------------------------------------------- This session's current user is: Surya (1 row(s) affected)
B. 搭配 DEFAULT 條件約束來使用 SESSION_USER
下列範例會建立一份資料表,針對記錄出貨回條者的名稱,利用 SESSION_USER 作為 DEFAULT 條件約束。
USE AdventureWorks
GO
CREATE TABLE deliveries3
(
order_id int IDENTITY(5000, 1) NOT NULL,
cust_id int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
delivery_date smalldatetime NOT NULL DEFAULT
DATEADD(dd, 10, GETDATE()),
received_shipment nchar(30) NOT NULL DEFAULT SESSION_USER
)
GO
加入資料表中的記錄,會印有目前使用者的使用者名稱。在本範例中,Wanida、SMacrae 和 AbolrousHazem 負責驗證出貨回條。可以使用 EXECUTE AS 來切換使用者內容加以模擬。
EXECUTE AS USER = 'Wanida' INSERT deliveries3 (cust_id) VALUES (7510) INSERT deliveries3 (cust_id) VALUES (7231) REVERT EXECUTE AS USER = 'SMacrae' INSERT deliveries3 (cust_id) VALUES (7028) REVERT EXECUTE AS USER = 'AbolrousHazem' INSERT deliveries3 (cust_id) VALUES (7392) INSERT deliveries3 (cust_id) VALUES (7452) REVERT GO
下列查詢會選取 deliveries3 資料表中的所有資訊。
SELECT order_id AS 'Order #', cust_id AS 'Customer #', delivery_date AS 'When Delivered', received_shipment AS 'Received By' FROM deliveries3 ORDER BY order_id GO
以下為結果集:
Order # Customer # When Delivered Received By -------- ---------- ------------------- ----------- 5000 7510 2005-03-16 12:02:14 Wanida 5001 7231 2005-03-16 12:02:14 Wanida 5002 7028 2005-03-16 12:02:14 SMacrae 5003 7392 2005-03-16 12:02:14 AbolrousHazem 5004 7452 2005-03-16 12:02:14 AbolrousHazem (5 row(s) affected)
社群新增項目
新增
顯示:

