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 |
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. |