首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle授权alter sequence

Oracle授权alter sequence
EN

Stack Overflow用户
提问于 2011-06-29 07:23:40
回答 3查看 21.7K关注 0票数 2

我有一个用户的grant alter sequence。但是我必须指定schema name来改变序列,否则它会返回错误sequence does not exist。有没有可能以某种方式进行授权,这样我就不必指定模式名称?我可以在不指定模式名称的情况下执行select/insert/update

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-29 23:18:05

名称解析和访问权限是两个独立的概念。grant允许您更改模式,但是您仍然受到所在名称空间的约束。有四种方法可以使一个模式中的名称解析到另一个模式中:

  1. 使用对象名称引用架构:

select schema_name.sequence_name.nextval from dual;

  • Alter当前会话以解析名称,就像您在另一个架构中一样:

在当前架构中alter session set current_schema = schema_name;

  • Create对象的同义词:

create synonym sequence_name for schema_name.sequence_name;

  • Create对象的公共同义词:

create public synonym sequence_name for schema_name.sequence_name;

票数 6
EN

Stack Overflow用户

发布于 2011-06-29 08:31:07

听起来您是以不同的用户身份连接到数据库的,而不是拥有序列的用户。在这种情况下,您需要在序列前面加上模式,否则您所说的序列就不明确了。

如果您以拥有用户的身份连接到数据库,则不需要模式限定符:

代码语言:javascript
复制
SQL> create sequence foo;

Sequence created.

SQL> grant alter on foo to hr;

Grant succeeded.
票数 2
EN

Stack Overflow用户

发布于 2011-06-29 07:34:26

您可以:

ALTER SESSION SET CURRENT_SCHEMA myschema..

然后,您可以引用没有限定符的所有项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6514212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档