2

ユーザーに連絡がgrant alter sequenceあります。しかしschema name、シーケンスを変更するには を指定する必要があります。そうしないと、エラーが返されますsequence does not exist。スキーマ名を指定する必要がないように付与することは可能ですか? select/insert/updateスキーマ名を指定しなくてもできます。

4

3 に答える 3

6

名前解決とアクセス権は別の概念です。はgrantスキーマを変更する権限を与えますが、使用している名前空間によって制限されます。あるスキーマの名前を別のスキーマで解決するには、次の 4 つの方法があります。

  1. オブジェクト名でスキーマを参照します。
    select schema_name.sequence_name.nextval from dual;
  2. 現在のセッションを変更して、他のスキーマにいるかのように名前を解決します。
    alter session set current_schema = schema_name;
  3. 現在のスキーマでオブジェクトのシノニムを作成します。
    create synonym sequence_name for schema_name.sequence_name;
  4. オブジェクトのパブリック シノニムを作成します。
    create public synonym sequence_name for schema_name.sequence_name;
于 2011-06-29T15:18:04.723 に答える
2

シーケンスを所有しているユーザーとは別のユーザーとしてデータベースに接続しているようです。その場合、シーケンスの前にスキーマを付ける必要があります。そうしないと、どのシーケンスについて話しているのかがあいまいになります。

所有ユーザーとしてデータベースに接続している場合、スキーマ修飾子は必要ありません。

SQL> create sequence foo;

Sequence created.

SQL> grant alter on foo to hr;

Grant succeeded.
于 2011-06-29T00:31:07.317 に答える
0

してもいいです:

ALTER SESSION SET CURRENT_SCHEMA myschema..

その後、修飾子なしですべてのアイテムを参照できます。

于 2011-06-28T23:34:26.490 に答える