using the schema in postbooks
Hi,
There is an accounting system called postbooks that uses Postgres for the
backend. I just downloaded the program yesterday. What is interesting is
within one database there are two schemas (api and public). The 'api' schema
is a bunch of views. The interesting part is if you update a view in
the 'api' it updates a table in the 'public' schema. Could someone explain
how that works? I was not aware that within a databases that the schema's
could talk to each other.
I looked in the doc's (that I have) but did not find an entry that describes
doing anything similar.
Johnf
On Friday 07 August 2009 6:42:07 am John wrote:
Hi,
There is an accounting system called postbooks that uses Postgres for the
backend. I just downloaded the program yesterday. What is interesting is
within one database there are two schemas (api and public). The 'api'
schema is a bunch of views. The interesting part is if you update a view
in the 'api' it updates a table in the 'public' schema. Could someone
explain how that works? I was not aware that within a databases that the
schema's could talk to each other.I looked in the doc's (that I have) but did not find an entry that
describes doing anything similar.Johnf
From:
http://www.postgresql.org/docs/8.4/interactive/sql-createschema.html
"A schema is essentially a namespace: it contains named objects (tables, data
types, functions, and operators) whose names can duplicate those of other
objects existing in other schemas. Named objects are accessed either
by "qualifying" their names with the schema name as a prefix, or by setting a
search path that includes the desired schema(s). A CREATE command specifying an
unqualified object name creates the object in the current schema (the one at
the front of the search path, which can be determined with the function
current_schema). "
--
Adrian Klaver
aklaver@comcast.net
On Fri, Aug 7, 2009 at 9:52 AM, Adrian Klaver <aklaver@comcast.net> wrote:
On Friday 07 August 2009 6:42:07 am John wrote:
Hi,
There is an accounting system called postbooks that uses Postgres for the
backend. I just downloaded the program yesterday. What is interestingis
within one database there are two schemas (api and public). The 'api'
schema is a bunch of views. The interesting part is if you update a view
in the 'api' it updates a table in the 'public' schema. Could someone
explain how that works? I was not aware that within a databases that the
schema's could talk to each other.I looked in the doc's (that I have) but did not find an entry that
describes doing anything similar.Johnf
From:
http://www.postgresql.org/docs/8.4/interactive/sql-createschema.htmlIt's very simple, you can update something anywhere you have permissions:
insert into api.table....
insert into public.table....
Or by using search_path, which works like the $PATH or %path% environment
variables on linux or windows. It's just a search list of schemas to use.
If my search path was:
public, api
and I type:
create table test (id int);
Then I will have a table called public.test
If my search_path was:
api, public
and I type:
create table test (id int);
Then I will have a table called api
etc...
--Scott
On Friday 07 August 2009 06:56:22 am Scott Mead wrote:
On Fri, Aug 7, 2009 at 9:52 AM, Adrian Klaver <aklaver@comcast.net> wrote:
On Friday 07 August 2009 6:42:07 am John wrote:
Hi,
There is an accounting system called postbooks that uses Postgres for
the backend. I just downloaded the program yesterday. What is
interestingis
within one database there are two schemas (api and public). The 'api'
schema is a bunch of views. The interesting part is if you update a
view in the 'api' it updates a table in the 'public' schema. Could
someone explain how that works? I was not aware that within a
databases that the schema's could talk to each other.I looked in the doc's (that I have) but did not find an entry that
describes doing anything similar.Johnf
From:
http://www.postgresql.org/docs/8.4/interactive/sql-createschema.htmlIt's very simple, you can update something anywhere you have permissions:
insert into api.table....
insert into public.table....
Or by using search_path, which works like the $PATH or %path% environment
variables on linux or windows. It's just a search list of schemas to use.If my search path was:
public, apiand I type:
create table test (id int);
Then I will have a table called public.test
If my search_path was:
api, publicand I type:
create table test (id int);
Then I will have a table called api
etc...
--Scott
Interesting where is the search path set? Better how is it set?
Johnf
On Friday 07 August 2009 07:27:28 am John wrote:
On Friday 07 August 2009 06:56:22 am Scott Mead wrote:
On Fri, Aug 7, 2009 at 9:52 AM, Adrian Klaver <aklaver@comcast.net> wrote:
On Friday 07 August 2009 6:42:07 am John wrote:
Hi,
There is an accounting system called postbooks that uses Postgres for
the backend. I just downloaded the program yesterday. What is
interestingis
within one database there are two schemas (api and public). The
'api' schema is a bunch of views. The interesting part is if you
update a view in the 'api' it updates a table in the 'public' schema.
Could someone explain how that works? I was not aware that within a
databases that the schema's could talk to each other.I looked in the doc's (that I have) but did not find an entry that
describes doing anything similar.Johnf
From:
http://www.postgresql.org/docs/8.4/interactive/sql-createschema.htmlIt's very simple, you can update something anywhere you have
permissions:insert into api.table....
insert into public.table....
Or by using search_path, which works like the $PATH or %path% environment
variables on linux or windows. It's just a search list of schemas to
use.If my search path was:
public, apiand I type:
create table test (id int);
Then I will have a table called public.test
If my search_path was:
api, publicand I type:
create table test (id int);
Then I will have a table called api
etc...
--Scott
Interesting where is the search path set? Better how is it set?
Johnf
Sorry I figured out how it works.
Thanks to all,
Johnf