我有一个用户的grant alter sequence。但是我必须指定schema name来改变序列,否则它会返回错误sequence does not exist。有没有可能以某种方式进行授权,这样我就不必指定模式名称?我可以在不指定模式名称的情况下执行select/insert/update。
发布于 2011-06-29 23:18:05
名称解析和访问权限是两个独立的概念。grant允许您更改模式,但是您仍然受到所在名称空间的约束。有四种方法可以使一个模式中的名称解析到另一个模式中:
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-29 08:31:07
听起来您是以不同的用户身份连接到数据库的,而不是拥有序列的用户。在这种情况下,您需要在序列前面加上模式,否则您所说的序列就不明确了。
如果您以拥有用户的身份连接到数据库,则不需要模式限定符:
SQL> create sequence foo;
Sequence created.
SQL> grant alter on foo to hr;
Grant succeeded.发布于 2011-06-29 07:34:26
您可以:
ALTER SESSION SET CURRENT_SCHEMA myschema..
然后,您可以引用没有限定符的所有项。
https://stackoverflow.com/questions/6514212
复制相似问题