Sven Rautenberg: Satz anlegen, wenn vorhanden ändern

Beitrag lesen

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."