小编典典

在不指定架构名称的情况下访问表

sql

我有一个称为的架构GBO_ARC_SCHEMA,其中有一个名为的表TEST_EMP,我有两个用户说USER_AUSER_B

首先我连接到USER_A并在下面的查询中解雇了

select count(*)from TEST_EMP;

count
-----
20

之后,我以as的身份连接USER_b并在下面的查询中触发,但是它给出了错误,表示该表或视图没有退出

select count(*)from TEST_EMP;

但是,如果我使用scma.object name它,则可以像下面这样查询

select count(*)from GBO_ARC_SCHEMA.TEST_EMP;

但是根据我的要求,我不想指定架构名称。

有人可以帮我吗?


阅读 177

收藏
2021-04-22

共1个答案

小编典典

如果您希望 所有 用户都可以从表中进行选择而无需使用架构名称,则可以创建一个 公共同义词

create public synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;

如果只想user_b省略模式名称,则想在user_b的模式中创建 私有同义词 WITHIN(以user_b身份登录)

create synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;

如果您坚持 不使用同义词,那么在登录后,请执行

alter session set current_schema = GBO_ARC_SCHEMA;
2021-04-22