Accessing a table without specifying the schema name

痞子三分冷 提交于 2019-12-06 21:32:17

问题


I have a schema called GBO_ARC_SCHEMA, in which I have one table called TEST_EMP, and I have two users say USER_A and USER_B.

First I connected to USER_A and fired below query

select count(*)from TEST_EMP;

count
-----
20

After that I connected as USER_b and fired below query but it is giving an error, saying that table or view does not exit

select count(*)from TEST_EMP;

But if I use scma.object name it is allowing me to query like below

select count(*)from GBO_ARC_SCHEMA.TEST_EMP;

but as per my requirement I don't want to specify schema name.

can somebody help me out?


回答1:


If you want all users to be able to select from the table without qualifying with the schema name, you want to create a public synonym:

create public synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;

If you only want user_b to omit the schema name, you want to create a private synonym WITHIN user_b's schema (that is logged on as user_b)

create synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP;

If you insist on not using synonyms, then, after logging in, do a

alter session set current_schema = GBO_ARC_SCHEMA;



回答2:


On the server roles for the login you are using, simply uncheck sysadmin and serveradmin roles. That should solve it




回答3:


For Postgres users with the same problem

ALTER ROLE <YOUR_USERNAME> SET search_path TO GBO_ARC_SCHEMA;


来源:https://stackoverflow.com/questions/21846648/accessing-a-table-without-specifying-the-schema-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!