我有一个名为GBO_ARC_SCHEMA
的模式,其中有一个名为TEST_EMP
的表,
我有两个用户说USER_A
和USER_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;
但根据我的要求,我不想指定架构名称。
有人能帮助我吗?
答案 0 :(得分:12)
如果您希望所有用户能够从表格中进行选择而不符合模式名称,则需要创建公共同义词:
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;
如果您坚持不使用同义词,那么在登录后,请执行
alter session set current_schema = GBO_ARC_SCHEMA;
答案 1 :(得分:0)
在您正在使用的登录的服务器角色上,只需取消选中sysadmin和serveradmin角色即可。 那应该解决它
答案 2 :(得分:-1)
对于具有相同问题的Postgres用户
ALTER ROLE <YOUR_USERNAME> SET search_path TO GBO_ARC_SCHEMA;