Обсуждение: creating tables that are visible across databases
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/
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
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