Re: Foreign key check only if not null? - Mailing list pgsql-general

From Richard Broersma
Subject Re: Foreign key check only if not null?
Date
Msg-id CABvLTWFUZHasf9MsJob2e6RmK4iTc-Edtt3z7_UkGgdyt4sqJg@mail.gmail.com
Whole thread Raw
In response to Foreign key check only if not null?  (Phoenix Kiula <phoenix.kiula@gmail.com>)
List pgsql-general
On Mon, Sep 12, 2011 at 6:48 PM, Phoenix Kiula <phoenix.kiula@gmail.com> wrote:

> I have a column in my table:
>    user_id  varchar(100) ;
>
> This can be NULL, or it can have a value. If it has a value during
> INSERT or UPDATE, I want to check that the user exists against my
> "Users" table. Otherwise, NULL is ok. (Because the functionality in
> question is open to both unregistered and registered users).
>
> Any idea on how I can implement a FOREIGN KEY constraint?

This sounds like an ordinary foreign key constraint.  Just be sure
that you drop the null constraint on the table's user_id column.

So:

ALTER TABLE "my table"
 ADD CONSTRAINT "my table_Users_user_id_fkey"
 FOREIGN KEY (user_id)
 REFERENCES "Users" (user_id) ON UPDATE CASCADE ON DELETE SET NULL,
 ALTER COLUMN user_id DROP NOT NULL;



--
Regards,
Richard Broersma Jr.

pgsql-general by date:

Previous
From: Eduardo Piombino
Date:
Subject: Re: Foreign key check only if not null?
Next
From: Reid Thompson
Date:
Subject: Re: Need help with what I think is likely a simple query - for each distinct val, return only one record with the most recent date.