ユーザーに連絡がgrant alter sequence
あります。しかしschema name
、シーケンスを変更するには を指定する必要があります。そうしないと、エラーが返されますsequence does not exist
。スキーマ名を指定する必要がないように付与することは可能ですか? select/insert/update
スキーマ名を指定しなくてもできます。
21965 次
3 に答える
6
名前解決とアクセス権は別の概念です。はgrant
スキーマを変更する権限を与えますが、使用している名前空間によって制限されます。あるスキーマの名前を別のスキーマで解決するには、次の 4 つの方法があります。
- オブジェクト名でスキーマを参照します。
select schema_name.sequence_name.nextval from dual;
- 現在のセッションを変更して、他のスキーマにいるかのように名前を解決します。
alter session set current_schema = schema_name;
- 現在のスキーマでオブジェクトのシノニムを作成します。
create synonym sequence_name for schema_name.sequence_name;
- オブジェクトのパブリック シノニムを作成します。
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 に答える