Mailinglisten-Archive |
Hallo, > Beispiel > > id anzahl nr merkmal1 merkmal2 status > > 1 7 555 rot klein an > 2 1 333 blau klein an > 3 3 555 rot klein aus > > Problem: > > Wenn durch update der status geaendert wird, muss ueberprueft werden, ob > es > bereits einen Eintrag mit identischen Merkmalen ( nr, merkmal1, merkmal2 > ) gibt. > > Wenn NEIN, nur update des status, wenn JA, anzahl des ersten Eintrags um > anzahl > des 2. Eintrags erhoehen und 2. Eintrag loeschen. > Alle Routinen haben bisher nur bewirkt, dass der 2. Eintrag geloescht > wurde, > die anzahl wurde nicht veraendert. Wie sahen denn diese Routinen aus? Um welche Datenbank handelt es sich überhaupt?! Mysql? Kann man es nicht von vornherein verhindern dass "identische" Datensätze existieren? Falls nicht, könnte ich mir da sowas vorstellen: "Select anzahl, id from tabelle where where nr="555" and merkmal1="rot" and merkmal2="klein"; wenn mehr als eine Zeile ausgegeben wird, anzahl aufsummieren, und über die id den ersten Datensatz updaten (anzahl und status), dann die andere id löschen. Sollte diese Tabelle von mehreren Prozessen gleichzeitig gelesen/geschrieben werden musst Du aufpassen dass es kein Chaos gibt, wenn 2 Prozesse "gleichzeitig" rumpfuschen. (wirklich gleichzeitig geht ja nicht, aber es kann z.b. einer gerade selecten, dann ein anderer löschen und dann will der erste wieder updaten -> chaos) so long, martin
php::bar PHP Wiki - Listenarchive