Re: check for primary key

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!)

In response to

Browse pgsql-general by date

  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.