Lists: | pgsql-general |
---|
From: | Tom Brown <brown(at)esteem(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | check for primary key |
Date: | 2009-11-09 19:19:56 |
Message-ID: | 1257794396.18623.415.camel@brown.esteem.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
Hey guys!
I would like to know how to query for the existence of a primary key on
a table. All of the tables have the column 'id' in them. That should be
the primary key. However, the primary key constraint got "lost" somehow.
Probably due to stupidity on my part.
I just want to add back the primary key constraint to the tables that
lost it. I want to query for the existance of it first, so I don't
produce an error when I do an 'ALTER TABLE ...' statement.
Any suggestions appreciated.
Thanks!
Tom
From: | Thom Brown <thombrown(at)gmail(dot)com> |
---|---|
To: | brown(at)esteem(dot)com |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: check for primary key |
Date: | 2009-11-09 20:58:57 |
Message-ID: | bddc86150911091258q6f899564r697edb53d4ddffbe@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
2009/11/9 Tom Brown <brown(at)esteem(dot)com>:
> Hey guys!
>
> I would like to know how to query for the existence of a primary key on
> a table. All of the tables have the column 'id' in them. That should be
> the primary key. However, the primary key constraint got "lost" somehow.
> Probably due to stupidity on my part.
>
> I just want to add back the primary key constraint to the tables that
> lost it. I want to query for the existance of it first, so I don't
> produce an error when I do an 'ALTER TABLE ...' statement.
>
> Any suggestions appreciated.
>
> Thanks!
> Tom
You could try:
SELECT COUNT(*)
FROM pg_class
INNER JOIN pg_constraint ON pg_class.oid = pg_constraint.conrelid
WHERE pg_constraint.contype = 'p'
AND pg_class.relname = 'my_table';
...replacing my_table with the table name. If it returns 1, it has a
primary key. Or use * instead of COUNT(*) and use no rows being
returned as a lack of primary key.
Regards
Thom Brown (hey, we have the same name!)