| 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: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| 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!)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Peter Eisentraut | 2009-11-09 21:42:15 | Re: Which locale to use for multiple-language support? |
| Previous Message | Tim Uckun | 2009-11-09 20:22:33 | Re: I can't seem to put the right combination of magic into the pg_hba and pg_ident files. |