Re: Check for existence of index
От | David Rysdam |
---|---|
Тема | Re: Check for existence of index |
Дата | |
Msg-id | 4252C891.3060601@ll.mit.edu обсуждение исходный текст |
Ответ на | Check for existence of index (David Rysdam <drysdam@ll.mit.edu>) |
Ответы |
Re: Check for existence of index
|
Список | pgsql-general |
And another thing, can't I do this: create table s.a (blah); create table s.b (blah); create index myindex on s.a(blah); create index myindex on s.b(blah); ? When I drop them I have to specify the schema name, so presumably it tracks them that way. Why can't I have the same index name be on different tables? David Rysdam wrote: > I have a script that automatically creates my database objects. In > order to automatically create indexes, it needs to first make sure > they don't exist. > > For things like tables, this is easy: > > select * from information_schema.tables where table_schema = > "<myschema>" and table_name = "<tablename>" > > But for indexes it is hard for some reason. There's a catalog table > "pg_index", but it doesn't have index, schema or table names. I > eventually found them in pg_class but the table and schema names > aren't there. > > After some searching around, I came across this very strange (to me, > anyway) "::regclass" thing that let me do this: > > select * from pg_catalog.pg_index where indexrelid = > 'schema.index'::regclass > > I'm not really clear what's that doing, but in any case it still isn't > what I want. That query returns information when the index exists but > errors out when the index doesn't exist. Is there a way I can get a > non-erroring query on either condition that will tell me if an index > exists on a given table in a given schema? > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > >
В списке pgsql-general по дате отправления: