Is it possible to have a mysql table accept a null value for a primary_key column referencing a diff

Posted by Dr.Dredel on Stack Overflow See other posts from Stack Overflow or by Dr.Dredel
Published on 2010-06-12T23:59:46Z Indexed on 2010/06/13 0:02 UTC
Read the original article Hit count: 168

Filed under:

I have a table that has a column which holds the id of a row in another table. However, when table A is being populated, table B may or may not have a row ready for table A.

My question is, is it possible to have mysql prevent an invalid value from being entered but be ok with a NULL? or does a foreign key necessitate a valid related value?

So... what I'm looking for (in pseudo code) is this:

Table "person" id | name

Table "people" id | group_name | person_id (foreign key id from table person)

insert into person (1, 'joe'); 

insert into people (1, 'foo', 1)//kosher
insert into people (1, 'foo', NULL)//also kosher
insert into people(1, 'foo', 7)// should fail since there is no id 7 in the person table.

The reason I need this is that I'm having a chicken and egg issue where it makes perfect sense for the rows in the people table to be created before hand (in this example, I'm creating the groups and would like them to pre-exist the people who join them). And I realize that THIS example is silly and I would just put the group id in the person table rather than vice-versa, but in my real-world problem that is not workable.

Just curious if I need to allow any and all values in order to make this work, or if there's some way to allow for null.

© Stack Overflow or respective owner

Related posts about mysql