Share via


USER (Transact-SQL)

既定値が指定されていない場合に、現在のユーザーのデータベース ユーザー名に対するシステム定義の値を、テーブルに挿入します。

トピック リンク アイコン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

参照

関連項目

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)

その他の技術情報

PRIMARY KEY 制約の作成と変更
列プロパティの変更

ヘルプおよび情報

SQL Server 2005 の参考資料の入手