]ここでrole_specificationは以下の通りです。SESSION_USER説明REVOKEコマンドは、1つ以上のロールに対して、以前に与えた権限を取り消します。PUBLICキーワードは暗黙的に定義された全ロールからなるグループです。権限の種類の意味についてはGRANTコマンドの説明を参照してください。全てのロールは、そのロールに直接許可された権限、現在属しているロールに許可された権限、PUBLICに許可された権限という3つの権限を合わせた権限を持っていることに注意してください。したがって、例えば、PUBLICからSELECT権限を取り消すことは、必ずしも全てのロールがそのオブジェクトに対するSELECT権限を失うことを意味しません。権限が直接許可されているロール、あるいは、別ロール経由で許可されているロールは、SELECT権限を持ち続けます。同様にユーザからSELECTを取り消しても、PUBLICまたはメンバとして属する他のロールがSELECT権限を持つ場合、SELECTの使用を拒否できません。FORが指定された場合、権限自体ではなく、その権限のグラントオプションのみが取り消されます。指定されていなければ、権限とグラントオプションの両方が取り消されます。グラントオプション付きの権限を保持しているユーザが、その権限を他ユーザに与えていた場合、与えられたユーザが保持する権限は依存権限と呼ばれます。権限を与えたユーザ自身の権限やグラントオプションが取り消され、その権限に依存権限が存在する場合、CASCADEが指定されていると依存権限も取り消されます。指定されていなければ、権限の取り消しが失敗します。この再帰的な権限の取り消しは、ユーザ権限の連鎖を通じて与えられた権限の中でも、REVOKEを実行されたユーザから追跡可能な範囲にのみ影響します。したがって、依存権限を持つユーザが他のユーザからも同じ権限を与えられている場合は、REVOKEが実行された後もその権限を保持している可能性があります。テーブルの権限を取り消す場合、対応する列の権限(もしあれば)も自動的に、そのテーブルの各列から取り消されます。ロールがテーブルに対する権限を持つ場合、個々の列から同じ権限を取り消しても影響ありません。OPTIONと呼ばれます。BYオプションも受け付けますが、そのオプション今のところ(その名前の存在確認を除いて)無視されます。このコマンド構文では、role_specificationで無意味なGROUPという単語を受け付けないことに注意してください。取り消すことができるのは、ユーザが直接付与した権限のみです。ユーザAがグラントオプションを付けてユーザBに権限を与え、その後、ユーザBがユーザCにその権限を与えたとすると、ユーザAはユーザCの権限を直接取り消すことはできません。その代わり、ユーザAがユーザBのグラントオプションをCASCADEオプション付きで取り消すことで、ユーザCに与えられた権限を取り消すことができます。別の状況を考えてみます。AとBの両方が同じ権限をCに与えた場合、AはAの与えた権限を取り消すことはできますが、Bの与えた権限を取り消すことはできません。したがって、Cは実質的にその権限を持ち続けることになります。オブジェクトの所有者以外がそのオブジェクト上の権限に対してREVOKEを実行した場合、ユーザがオブジェクトに対して何の権限も持っていなければ、即座にコマンドが失敗します。何らかの権限があればコマンド処理が続行されますが、取り消すことができるのはそのユーザがグラントオプションを持つ権限のみです。PRIVILEGES構文をまったく権限を持たない状態で実行すると、警告が出力されます。(原理上、上記の説明はオブジェクト所有者にも適用されますが、所有者は常に全てのグラントオプションを保持しているので、こうした問題が発生することはありません)。スーパーユーザがGRANTやREVOKEコマンドを発行した場合、そのコマンドは、対象のオブジェクトの所有者によって発行されたものであるかのように動作します。根本的には全ての権限はオブジェクトの所有者から渡されるものなので(ただし、グラントオプションの連鎖により間接的に渡される場合もありますが)、スーパーユーザは、全ての権限を取り消すことができます。この場合は上述のCASCADEを使用する必要があります。OPTION権限を持つロールのメンバでなければなりません。OPTION権限を持つロールによって発行されたかのように、このコマンドは実行されます。t1テーブルがg1ロールによって所有され、u1がg1ロールのメンバであるとします。この場合、u1はg1で付与されたものと記録されている権限を取り消すことができます。これには、u1が付与した権限とg1ロールの他のメンバによって付与された権限が含まれます。REVOKEを実行したロールが、ロールの持つ複数メンバ資格の経路を通して間接的に必要な権限を持つ場合、このコマンドがどのロールで実行されたかについては指定されません。ROLEを使用して、REVOKEを行わせたい特定のロールになることを推奨します。しないと、意図しない権限を取り消すことになったり、取り消し自体が失敗することになったりします。特定の権限のより詳細な情報やオブジェクトの権限を調べる方法については5.7を参照してください。例テーブルfilmsに対するpublicに与えた挿入権限を取り消します。PUBLIC;ビューkindsから、ユーザmanuelに与えた全ての権限を取り消します。manuel;これは実際には「自分が与えた全ての権限を取り消す」ことを意味します。ユーザjoeからロールadmins内のメンバ資格を取り消します。joe;互換性GRANTコマンドの互換性についての注釈はREVOKEにも同様に当てはまります。標準では、キーワードRESTRICTかCASCADEのどちらかが必須です。PostgreSQLではデフォルトでRESTRICTとみなされます。