O.k., this question is more about the best way to run a multi-table insert
on a MySQL DB (4.0.18), given a console based interface (Python 2.3.x under
SUSE Linux 9.2). My guess is that this would be a bit easier with a GUI,
where I would have widgets to assign to various functions.  However, I am
currently building a console app.  The GUI will come later.

When I add a person to the DB, the main table impacted is called 'person'. 
However, a few other tables are affected as well - entity, address,
affiliation, and aux_mbr.  For example, the person table uses the keys from
the others:

person.affil_id = affil.affil_id, person.ent_id = entity.ent_id, etc.

Somehow, the program will need to get the foreign keys from the other
tables, and insert that into the person table.  Technically, the program
won't be very likely to know what the current primary_key is for each table.

The 2 options I see so far are: 
(1) run insert queries on each table, ignoring the foreign key fields, and
then running an update query on person to add the foreign keys from the
respective tables:
  insert into person values (PK, 'blah', 'blab')
  insert into entity values (PK, 'bleep', 'blip')
  update person set ent_id=1 where person_id=1 #'1' should be a variable

(2) run a query when the input form is launched to determine the current
max value of the foreign keys, then use that info to automatically add the
foreign keys into the person table:
  select entity_id MAX from entity
  ### run Python input form, ent_id is passed to the appropriate input
  statement ###  
  insert into person tuple  #(PK, ent_id, 'blah', 'blab')

The commands here aren't intended to be precise, but rather to help paint
the picture.

A link to a previous thread or documentation on this would be fine.  I don't
mind doing the reading - but my Google search seems to turn up more info
about multi-table deletes than inserts.  I realize that MySQL doesn't
support a single multi-table insert function, but are the two approaches I
see good, bad, common??

Thanks,
Don
-- 
evangelinux    GNU Evangelist
http://matheteuo.org/                   http://chaddb.sourceforge.net/
"Free software is like God's love - you can share it with anyone anytime
anywhere."

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to