Oracle 甲骨文授权变更序列
我有一个Oracle 甲骨文授权变更序列,oracle,sequence,alter,grant,Oracle,Sequence,Alter,Grant,我有一个向用户授予alter sequence。但是我必须指定模式名来更改序列,否则返回的错误是序列不存在。是否可以以不必指定架构名称的方式进行授权?我可以在不指定架构名称的情况下执行select/insert/update。您可以: ALTER SESSION SET CURRENT\u SCHEMA myschema 然后,您可以引用所有不带限定符的项。听起来您是以与序列所有者不同的用户身份连接到数据库的。在这种情况下,您需要在序列前面加上模式,否则您所谈论的序列就不明确了 如果您作为所有者
向用户授予alter sequence
。但是我必须指定模式名
来更改序列,否则返回的错误是序列不存在
。是否可以以不必指定架构名称的方式进行授权?我可以在不指定架构名称的情况下执行select/insert/update
。您可以:
ALTER SESSION SET CURRENT\u SCHEMA myschema
然后,您可以引用所有不带限定符的项。听起来您是以与序列所有者不同的用户身份连接到数据库的。在这种情况下,您需要在序列前面加上模式,否则您所谈论的序列就不明确了 如果您作为所有者用户连接到数据库,则不需要架构限定符:
SQL> create sequence foo;
Sequence created.
SQL> grant alter on foo to hr;
Grant succeeded.
名称解析和访问权限是两个独立的概念。
grant
允许您更改模式,但您仍然受到所在命名空间的限制。有四种方法可以使一个架构中的名称在另一个架构中解析:
从dual中选择schema\u name.sequence\u name.nextval代码>
Alter session set current\u schema=schema\u name代码>
为架构创建同义词序列名称。序列名称代码>
为schema\u name.sequence\u name创建公共同义词sequence\u name代码>
我发现我们已经有了一个公共同义词,
alter sequence
仍然不能工作,当我试图修改它时,我发现sequence不存在
错误。