MySQL: affected_rows treibt mich in den Wahnsinn

Joerg Rossdeutscher <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <1101762214.3638.31.camel@ratti>
Moin,

folgendes ist das Problem:

Per php möchte ich in MySQL 
- den Wert eines Feldes ÄNDERN, wenn es bereits existiert,
- oder einen entsprechenden Datensatz HINZUFÜGEN, wenn das Feld
  noch nicht exisitierte.

Sprich, auf gut hochdeutsch: Hinterher soll da stehen:

Eindeutige ID: 13
Name: Ratti

...egal, ob es die "13" vorher schon gab und welchen Wert "Name" hatte.
Mein Problem: Es soll auch dann klappen, wenn beides bereits vorher
exakt so vorhanden war!

Ich habe sowas im Einsatz, Pseudocode, ungequotet:

UPDATE SET name="ratti" WHERE id=13
if mysql_affected_rows == 0 {
	INSERT SET name="ratti" , id=13
}


Das klappt in allen Fällen - AUSSER, wenn der Datensatz vorher schon
genau so aussah, denn affected_rows meldet nur die tatsächlich
veränderten Datensätze zurück (Bin ich alleine mit der Meinung, daß das
total bescheuert ist?). In diesem Fall bekomme ich eine 0 geliefert, der
nächste Befehl liefert mir dann einen Fehler, weil die id als UNIQUE
deklariert ist - was auch korrekt ist.


Da die Datenbank sehr groß ist, kommt es nicht in Frage, vorher mit
SELECT die Werte auszugraben und zu gucken, was man tun muß.


Da das ganze auch auf älteren Distris laufen soll, kommt ebenfalls nicht
in Frage INSERT ... ON DUPLICATE KEY UPDATE zu verwenden, weil das ab
MySQL 4.1 und somit zu neu ist.


Für REPLACE finde ich leider nicht heraus, seit wann das drin ist - und
ehrlich gesagt, ich begreife nicht, was genau es denn nun ersetzt und
was nicht.


Gruß und Danke, 
Ratti


-- 
 -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
 /\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
signature.asc (application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBBq46mCGbv12v1ACwRAh+IAJ4lyFwMggPRLdATa+4uWMcsoZ6MwQCeMAx7
kB5vHeurFRTjbo1pH67u1fY=
=9Dkl
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.