首页 文章

访问表而不指定模式名称

提问于
浏览
8

我有一个名为 GBO_ARC_SCHEMA 的模式,其中我有一个名为 TEST_EMP 的表,我有两个用户说 USER_AUSER_B .

首先,我连接到 USER_A 并在下面查询

select count(*)from TEST_EMP;

count
-----
20

之后,我连接为 USER_b 并在查询下方触发,但它发出错误,表示表或视图未退出

select count(*)from TEST_EMP;

但是,如果我使用 scma.object name ,它允许我查询如下

select count(*)from GBO_ARC_SCHEMA.TEST_EMP;

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

有人可以帮帮我吗?

3 回答

  • 11

    如果您希望所有用户都能够从表中进行选择而不使用模式名称进行限定,则需要创建公共同义词:

    create public synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;
    

    如果您只希望 user_b 省略模式名称,则需要创建一个私有同义词WITHIN user_b的模式(以user_b身份登录)

    create synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;
    

    If you insist 关于不使用同义词,然后在登录后执行

    alter session set current_schema = GBO_ARC_SCHEMA;
    
  • -2

    在您正在使用的登录的服务器角色上,只需取消选中sysadmin和serveradmin角色即可 . 那应该解决它

  • 0

    对于具有相同问题的Postgres用户

    ALTER ROLE <YOUR_USERNAME> SET search_path TO GBO_ARC_SCHEMA;
    

相关问题