Moin!
[1] versuche Datensatz per UPDATE zu ändern
[2] prüfe ob genau ein Datensatz geändert wurde (mittels affected_rows etc)
[3] wenn > 1 dann problem
wenn 1 - dann okay, änderung ist ja bereits erfolgt
wenn 0 - dann neuen Datensatz mit INSERT anlegen
UPDATE liefert bei affected_rows im Normalfall nur dann eine 1, wenn tatsächlich etwas verändert wurde. Ein UPDATE ohne Veränderung liefert keinen affected_row.
für optimal(er).
Du weißt, was von Steigerungsformen des Worts "optimal" zu halten ist?
Ist resourcenfreundlicher als
- select count(*) ... if = 0 dann insert, sonst update oder
Das will man sicherlich nicht.
- insert & hoffen auf Unique/Primary Key violation
Wenn die Daten und das Anwendungsszenario danach beschaffen sind, ist diese Methode eindeutig vorzuziehen. Pro Datensatz genau ein Query, atomar, macht keine Probleme im Multiuserbetrieb.
- Sven Rautenberg
"Love your nation - respect the others."