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