Обсуждение: creating tables that are visible across databases

Поиск
Список
Период
Сортировка

creating tables that are visible across databases

От
Mark Stosberg
Дата:
Hello,
 I'd like to create some tables that would visible across databases,
much like the postgres system tables. These would be for "static" data,
such as state and country codes, and geo-spatial data. I couldn't find
this mentioned in the docs, but unless this feature of the system tables
is magical, it appears to be possible. Did I miss an explanation in some
docs, or could someone give me a pointer?  Thanks!
  -mark

personal website             }      Summersault Website Development
http://mark.stosberg.com/    {      http://www.summersault.com/


Re: creating tables that are visible across databases

От
Tom Lane
Дата:
Mark Stosberg <mark@summersault.com> writes:
>   I'd like to create some tables that would visible across databases,
> much like the postgres system tables. These would be for "static" data,
> such as state and country codes, and geo-spatial data. I couldn't find
> this mentioned in the docs, but unless this feature of the system tables
> is magical, it appears to be possible.

Unfortunately, it is magic ... see IsSharedSystemRelationName() for more
info.  Possibly you could hack that routine to allow certain other names
to be considered shared.

It looks to me like some of the uses of IsSharedSystemRelationName
could/should be replaced by examining pg_class.relisshared, but in other
places it's really necessary to determine sharedness with nothing but a
relname to go on.

This will all need to be rethought when we implement schemas, anyway...
        regards, tom lane


Re: creating tables that are visible across databases

От
Jeff Hoffmann
Дата:
Mark Stosberg wrote:
> 
> Hello,
> 
>   I'd like to create some tables that would visible across databases,
> much like the postgres system tables. These would be for "static" data,
> such as state and country codes, and geo-spatial data. I couldn't find
> this mentioned in the docs, but unless this feature of the system tables
> is magical, it appears to be possible. Did I miss an explanation in some
> docs, or could someone give me a pointer?
>   Thanks!

you could create the tables using a template database, in which case
they would be created when you create a new database using that template
(look at "createdb -T" to see how this works).  this may not be what
you're looking for because they wouldn't be shared across databases,
they would just be copied into the new database when it was created.  i
don't think there's a way to have shared access to those tables.

-- 

Jeff Hoffmann
PropertyKey.com