ユーザー・アクセスの制御複数選択46 / 50 問

以下のSQL文でエラーにならないものはどれですか。
※ SQL文内のオブジェクトとユーザーはすべて存在すると仮定します。

AGRANT SELECT ON user1.sequence1 TO user2✓
BGRANT NEXTVAL ON user1.sequence1 TO user2
CGRANT SELECT FOR UPDATE ON user1.table1 TO user2
DGRANT SELECT ON user1.table1 TO user2✓
正解:A・D解説

GRANT文に指定できるのは正式なオブジェクト権限名のみです。NEXTVALやSELECT FOR UPDATEはSQLの操作名であってオブジェクト権限名ではありません。
各選択肢の検討

  • A(正解):シーケンスへのSELECT権限。これはCURRVALとNEXTVALの使用を含む正式な権限名です。
  • B(誤):NEXTVALというオブジェクト権限は存在しません。シーケンスへの権限はSELECTで付与します。
  • C(誤):SELECT FOR UPDATEというオブジェクト権限は存在しません。表へのSELECT権限がSELECT文とSELECT FOR UPDATE文の両方の使用を含みます。
  • D(正解):表へのSELECT権限。最も基本的なオブジェクト権限です。

シーケンスと表のオブジェクト権限

オブジェクト権限許可される操作
シーケンスSELECTCURRVALの参照、NEXTVALの取得
シーケンスALTERシーケンスの定義変更
表SELECTSELECT文、SELECT FOR UPDATE文
表INSERTINSERT文
表UPDATEUPDATE文
表DELETEDELETE文
表ALTER表定義の変更
表REFERENCES外部キーで参照する権限

権限名はSQLの動詞と必ずしも一致しないため、覚え方には注意が必要です。

前後の問題