Mailinglisten-Archive |
Hi, Alexander Dobernig: > Und ich bekomme jetzt externe Daten im Format > > Feld A > Feld B > [Feld C] > [Feld D] > > So habe ich das problem, daß ich ich in der tabelle1 einen neuen record mit > der richtigen ID anlegen muß und falls nötig auch in der Tabelle Main falls > dieser Wert nicht existiert wobei aber im pseudoCOMPOUND PRIMARY ABCD die > Felder C&D NULL sein können weshalb es kein wirklicher PRIMARY sein kann Da bleibt dir wirklich nichts anderes übrig, als den zweistufigen Weg zu gehen (d.h. erst gucken ob der Datensatz bereits existiert), was du am schnellsten mit einem UPDATE machen kannst, das liefert die Zahl der geänderten Datensätze zurück; oder halt mit einem SELECT, wenn du die ID sowieso in jedem Fall brauchst, weil der UPDATE die nämlich nicht zurückliefert. Vier solche Felder würde ich allerdings sowieso nie zu einem Primärindex machen, weil der Datenwust, den du da mitschleppen würdest, ungeheuerlich wäre. An sich ginge das mit MySQL 3.23 nämlich -- das kann NULLs im Index. Ansonsten ist die Beschreibung von REPLACE INTO relativ eindeutig, d.h. der Datensatz mit kollidierendem Index wird gelöscht und dann wird, genau wie beim Insert, ein neuer angelegt. Und der kriegt nunmal eine neue ID... Die Jungs von MySQL haben schon auf der TODO-Liste, das auch anders zu ermöglichen, aber es ist alles andere als einfach, sobald die Fälle komplizierter werden => das erschlägt man dann gleich alles mit Stored Procedures oder so. -- Matthias Urlichs | noris network GmbH | smurf_(at)_noris.de | ICQ: 20193661 The quote was selected randomly. Really. | http://www.noris.de/~smurf/ -- EE's do it without shorts. --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive