Re: public synonym
От | Adrian Klaver |
---|---|
Тема | Re: public synonym |
Дата | |
Msg-id | 568EE09B.4050101@aklaver.com обсуждение исходный текст |
Ответ на | Re: public synonym ("michael@sqlexec.com" <michael@sqlexec.com>) |
Список | pgsql-sql |
On 01/07/2016 12:27 PM, michael@sqlexec.com wrote: > You can infer the context by first setting the search_path variable. > You can set it initially in your connection or do it for a database > context or even a role context > SET search_path = MASTER_USER, public, pg_catalog; > ALTER DATABASE whatever SET search_path = MASTER_USER, public, pg_catalog; > ALTER ROLE whoever SET search_path = MASTER_USER, public, pg_catalog; Just be aware that Postgres folds identifiers to lower case: test=# create schema MASTER_USER; CREATE SCHEMA test=# \dn List of schemas Name | Owner -------------+---------- master_user | postgres public | postgres test=# create table MASTER_USER.test_tbl(id int); CREATE TABLE test=# \d master_user.test_tbl Table "master_user.test_tbl" Column | Type | Modifiers --------+---------+----------- id | integer | UNLESS the tool you are using to create objects quotes the object name: test=# create schema "MASTER_USER"; CREATE SCHEMA test=# create table MASTER_USER.test_tbl(id int); ERROR: schema "master_user" does not exist test=# create table "MASTER_USER".test_tbl(id int); CREATE TABLE test=# \d "MASTER_USER".test_tbl Table "MASTER_USER.test_tbl" Column | Type | Modifiers --------+---------+----------- id | integer | More details at: http://www.postgresql.org/docs/9.4/static/sql-syntax-lexical.html 4.1.1. Identifiers and Key Words > > Then you can continue to let the tables be non-qualified. bye bye > synonyms! > > Regards > Michael >> Eugene Yin <mailto:eugeneymail@ymail.com> >> Thursday, January 7, 2016 3:17 PM >> PostgreSQL ver 9.4.5. Linux OS. >> Application: Web Based >> >> Platform: >> App Server (java) --> jdbc call --> Database Server (PostgreSQL) >> >> >> I do know that PostgreSQL does not support the public synonym.Now, for >> a user schema (let's call it MASTER_USER), if I coded in the stored >> function/procedure like the following, without using a public synonym >> to identify the table name: >> >> select user_name from user_info_table >> >> then access it from the Java (web app) sidevia the JDBC call to the >> database, will that work? >> >> OR, >> >> I must use the identifier inside the sql, such as: >> >> select user_name fromMASTER_USER.user_info_table? >> >> >> I come from the Oracle world, there I first create the public synonym >> for the table, then in the stored procedure I just directly reference >> the table with no need to identify the table with a schema name. Like >> to know how it work under the PostgreSQL. >> >> >> Thanks >> >> Eugene > -- Adrian Klaver adrian.klaver@aklaver.com
В списке pgsql-sql по дате отправления: