# GRANT 文

GRANT 文を使って、データベースにある情報の操作権限を、指定した一人あるいは全ユーザに与えることができます。

次の権限を与えることができます。

- 表からの情報の削除
- 表への情報の挿入
- 表あるいは表にある列の部分集合への外部キー制約の作成
- 表やビュー、表にある列の部分集合からの情報の選択
- 表へのトリガーの作成
- 表あるいは表にある列の部分集合の情報の更新
- 関数あるいは手続きの実行

GRANT文を発行する前に、`derby.database.sqlAuthorization`属性が`true`であることを確認してください。`derby.database.sqlAuthorization`属性により、SQL認証が有効になります。

ユーザに権限付与が認められている情報であれば、その情報への権限をユーザは与えることができます。 詳細については、権限を与えようとしている情報に対応したCREATE文の説明文を読んでください。

GRANT文の書き方は、表に対する権限付与なのか、それともプログラムルーチンに対する権限付与なのかにより、その構文が異なります。

#### 表の場合の構文

    GRANT 権限タイプ ON [TABLE] { 表名 | ビュー名 } TO 権限を与えられる人

#### プログラムルーチンの場合の構文

    GRANT EXECUTE ON { FUNCTION | PROCEDURE } プログラムルーチンの指示子 TO 権限を与えられる人

#### 表権限

      DELETE |
      INSERT |
      REFERENCES [列一覧] |
      SELECT [列一覧] |
      TRIGGER |
      UPDATE [列一覧]

#### 列一覧

      ( 列識別子 {, 列識別子}* )

ALL PRIVILEGES権限により指定した表へのすべての権限をユーザに付与します。権限の並びを指定して、表への一つ以上の権限を付与することも可能です。

DELETE権限により指定した表から行を削除する権限を付与します。

INSERT権限により指定した表に行を挿入する権限を付与します。

REFERENCES権限により指定した表への外部キー参照を作成する権限を付与します。REFERENCESに合わせて列並びが指定された場合、指定した列への外部キー参照だけが許可されます。

SELECT権限により表あるいはビューでSELECT文を行う権限が付与されます。もしSELECT権限で列の並びが指定された場合、それらの列にのみ権限は有効です。列の並びが指定されなかった場合、表の全列について権限は有効です。

TRIGGER権限により指定した表にトリガを作成する権限が付与されます。

UPDATE権限により指定した表にUPDATE文を使う権限が付与されます。列の並びが指定された場合、権限は指定された列にのみ有効です。WHERE節のある文で行を更新する場合、更新する行にある列へのSELECT権限も必要です。

#### 権限を与えられる人

    {	認証識別子 | PUBLIC } [,{ 認証識別子 | PUBLIC } ] *

特定のユーザまたは全ユーザに権限を与えることができます。 PUBLIC というキーワードは全ユーザをあらわします。PUBLICが与えられた場合、現存するユーザのみならず、以降に作成されたユーザにも権限が与えられます。 PUBLICに与えられた権限と、個々のユーザに与えられた権限は、独立しています。 例えば、`t`という表へのSELECT権限が、PUBLICと`harry`という認証識別子に対して与えられているとしましょう。この場合は、`harry`という認証識別子からSELECT権限が剥奪されたとしても、HarryはPUBLICの権限を通して、`t`という表を操作可能です。

#### プログラムルーチンの指示子

    {
    	関数名 | 手続きの名前
    }

#### 例

tという表へのSELECT権限を`maria` と `harry`という認証識別子に与えるには、次のように書きます。

    GRANT SELECT ON TABLE t TO maria,harry

tという表へのUPDATEとTRIGGER権限を、`anita`と`zhi`という認証識別子に与えるには、次のように書きます。

    GRANT UPDATE, TRIGGER ON TABLE t TO anita,zhi

s.vという表へのSELECT権限を全てのユーザに与えるには、次のように書きます。

    GRANT SELECT ON TABLE s.v to PUBLIC

pという手続きの実行権限を、`george`という認証識別子に与えるには、次のように書きます。

    GRANT EXECUTE ON PROCEDURE p TO george

親トピック: 文
関連資料
REVOKE 文
SYSTABLEPERMS システム表
SYSCOLPERMS システム表