Moin!
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.
Das ist aber rein mysql-spezifisch. Genauso wenig kann man das auf alle anderen DBMSe verallgemeinern wie das Gegenteil.
Es verhindert aber, dass der Ansatz "UPDATE, und wenn Null Datensätze verändert wurden, dann INSERT" vernünftig funktioniert.
- 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.So wunderschön pauschalisieren kannst auch nur du. Belege?
Wenn ich einen externen unique-key habe, der einen zu importierenden Datensatz eindeutig auch innerhalb der eigenen Datenbank beschreibt, eignet der sich bei regelmäßig wiederkehrenden Updates der eigenen Datenbank prima für "INSERT ... ON DUPLICATE KEY UPDATE ...".
Oder für was wolltest du Belege?
- Sven Rautenberg
"Love your nation - respect the others."