USER (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
既定値が指定されていない場合に、現在のユーザーのデータベース ユーザー名に対するシステム定義の値を、テーブルに挿入します。
構文
USER
戻り値の型
nvarchar(128)
注釈
USER では、USER_NAME システム関数と同じ機能が提供されます。
USER は、CREATE TABLE または ALTER TABLE ステートメントで DEFAULT 制約を指定して実行するか、標準的な関数として使用します。
USER では、常に現在のコンテキストの名前が返されます。 EXECUTE AS ステートメントの後に呼び出した場合は、権限を借用したコンテキストの名前が USER により返されます。
Windows プリンシパルがグループのメンバーシップを使ってデータベースにアクセスした場合、グループの名前ではなく Windows プリンシパルの名前が USER により返されます。
例
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 制約と共に使用する
次の例では、sales 行の販売員に対する 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. USER を EXECUTE 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)