Thread: Primary keys and NOT NULL

Primary keys and NOT NULL

From
"Susan Lane"
Date:
Hi -

I noticed that all of my primary keys are specified as not null and I did
not specify not null when I built the tables.  Does Postgres automatically
make all primary keys not null?  This is a problem for me because I have a
few tables that have multiple column primary keys where one of the columns
may be null.  Is there any way for me to change the not null specification?
or is that a requirement for primary keys in Postgres?  This was not the
case in Oracle....which is where I'm trying to port my data from.
--
Susan Lane
DPN, Incorporated
4631 Spring Mountain Road
Las Vegas, NV 89102
Email  suel@dpn.com
Ph. (702) 873-3282
Fax (702) 873-3913
http://www.dpn.com



Re: Primary keys and NOT NULL

From
Stephan Szabo
Date:
On Thu, 11 Jul 2002, Susan Lane wrote:

> Hi -
>
> I noticed that all of my primary keys are specified as not null and I did
> not specify not null when I built the tables.  Does Postgres automatically
> make all primary keys not null?  This is a problem for me because I have a
> few tables that have multiple column primary keys where one of the columns
> may be null.  Is there any way for me to change the not null specification?
> or is that a requirement for primary keys in Postgres?  This was not the
> case in Oracle....which is where I'm trying to port my data from.

At least SQL92, primary keys are not satisifed if any of the values are
null, by my reading:

"A unique constraint is satisfied if and only if no two rows in
a table have the same non-null values in the unique columns. In
addition, if the unique constraint was defined with PRIMARY KEY,
then it requires that none of the values in the specified column or
columns be the null value."

Do you really need this as a primary key as opposed to a unique
constraint?