"Jesse" <[EMAIL PROTECTED]> wrote on 12/22/2005 05:09:12 PM:

> I'm experimenting with Foreign Keys to maintain referential integrity. I 

> have just added a Foreign Key to one of my tables, but now when I 
attempt to 
> add a new record, I get this error:
> 
> #23000Cannot add or update a child row: a foreign key constraint fails 
> (`fccamp/families`, CONSTRAINT `FK_Campers` FOREIGN KEY (`ID`) 
REFERENCES 
> `campers` (`FamilyID`) ON DELETE CASCADE ON UPDATE CASCADE)
> 
> Did I get something backwards here?  Does a child record have to exist 
> before I can add a parent record?  I thought that a Foreign key referred 
to 
> a child record?  In other words, the "Foreign" component is the child 
table. 
> Is that not right?  If it is, how do I add records?
> 
> Thanks,
> Jesse 
> 

You have to have the parent record first. The FK ensures that the value 
you add to the child table is one of the "valid" values listed in the 
parent table. So with the key you defined, you would have to have a record 
in the `campers` table before you could create a `family` record.  I think 
you defined it backwards because the constraint should be defined on the 
child table, not the parent table. 

I think it should have been defined on the `camper` table like this

...FOREIGN KEY (`familyID`) references family(`id`)...

Hey, I did it too (once a loooong time ago). Don't feel bad.

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine

Reply via email to