Hi Bennett,

----- Original Message -----
From: "Bennett Haselton" <[EMAIL PROTECTED]>

> In a database that enforced referential integrity, if you say that a field
> in one table is a foreign key referencing another table, then any value in
> the foreign key field in the first table must reference an existing row in
> the second table.  (Right?)

Yea.

> But suppose you have a database storing, I dunno, buses, their occupants,
> and the driver of each bus, so you have a table BUS, and one of the fields,
> "driver", is a foreign key field specifying the SSN of the person who
> drives the bus.  Then you have another table, "person", with a foreign key
> field "BUSNUMBER" that references the VIN number of the bus that the person
> is on.  Assume that every bus has people on it and every person is on a
> bus, so neither foreign key field can be NULL.  (Stupid example in terms of
> relation to the real world, but I can't think of anything better.)  In
> general, you have a one-to-many relationship from one group to another, and
> then a one-to-one relationship from the second group back to the first one,
> and the constraints of the "real world" that you're modeling suggest that
> neither one of these can be NULL.
>
> The problem is, how would you add a new bus and a new driver to the
> database?  Whichever one is added first, you're going to get an error
> because its counterpart doesn't exist yet, violating referential integrity.
>
> You could always relax the NOT NULL constraint, but that might not be
> desirable if you want to be consistent with the real-world situation that
> your database describes.  Is there a way to update two tables at the exact
> same time so that referential integrity never gets violated?

You can do this by putting the two updates inside a transaction, using the
InnoDB table type instead of MyISAM.
No problem.


Regards,
Arjen.

--
MySQL Training Worldwide, http://www.mysql.com/training/
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Mr. Arjen G. Lentz <[EMAIL PROTECTED]>
 / /|_/ / // /\ \/ /_/ / /__   MySQL AB, Technical Writer
/_/  /_/\_, /___/\___\_\___/   Brisbane, QLD Australia
       <___/   www.mysql.com




---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to