• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wenn Daten bereits vorhanden sind updaten

andynail

Mitglied
Hallo zusammen

es kann schon mal vorkommen das ein Datensatz mit Werten belegt wurde, die bereits vorhanden sind. Und so fand ich eine sql Anweisung um ein Update der vorhandenen Werte zu machen, damit dieser Eintrag nicht doppelt vorhanden ist:

PHP:
mysql_query("insert into Cache set Jetzt = now(), url = '$Adresse', Name = '$LinkName', Infos = '$Infos', Daten = '$Daten' ON DUPLICATE KEY UPDATE Jetzt = now(), url = '$Adresse', Name = '$LinkName', Infos = '$Infos', Daten = '$Daten'");

Und jetzt ändere ich nur die Angabe für das Feld Infos, doch sind die Daten doppelt vorhanden.

Müssen alle Werte der Felder übereinstimmen, oder reicht nur ein Wert aus einem Feld? Denn es existiert noch ein weiteres Feld Namens ID mit der Eigenschaft auto_increment.

Was nun? Wäre schön wenn das möglich wäre und ich bedanke mich im Vorraus.

Gruß Andreas
 
Les noch mal die Doku: MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.4.3 INSERT ... ON DUPLICATE KEY UPDATE

Wenn Sie ON DUPLICATE KEY UPDATE angeben und ein Datensatz eingefügt wird, der einen doppelten Wert in einem eindeutigen Index oder einem Primärschlüssel erzeugen würde, dann
Da du in deinem INSERT keinen doppelten Primärschlüssel erzeugst, wird kein UPDATE durchgeführt.

Du kannst prinzipiell kein INSERT und UPDATE gleichzeitig machen. In deinem Fall musst du die ID des eingefügten Datensatz ermitteln und dann denn UPDATE auf diesen entsprechenden Eintrag machen.
 
Wenn du wirklich willst, dass kein Eintrag doppelt ist, dann machst du einen Unique-Constraint über alle Attribute, ausgenommen des Primärschlüssels mit auto_increment.

Zudem ist die INSERT Syntax falsch.
 
Zurück
Oben