MudGuard: ON DUPLICATE KEY UPDATE und WHERE

Beitrag lesen

Hi,

nachdem ich nun meine Rechnungen gemacht habe, würde ich diese gerne in die Datenbank schreiben. Wenn für das Paper und den User schon ein Betrag vorhanden ist, soll er überschrieben werden, falls nicht ein neuer Datensatz angelegt werden.

Umgekehrt: Du fügst einen neuen Datensatz hinzu - es sei denn, der Key ist schon vorhanden.

Das setzt also erstmal einen Unique Key voraus.

INSERT INTO mathe SET betrag=:betrag
ON DUPLICATE KEY UPDATE betrag=:betrag
WHERE id_paper=100 AND user=10

ALso erst mal das Insert:

INSERT INTO mathe (betrag, id_paper, user) VALUES (:betrag, 100, 10);

Ich gehe mal davon aus, daß auf id_paper + user der Unique-Key existiert.

Dann würde das INSERT scheitern, wenn der Datensatz mit id_paper 100 und user 10 schon existiert.

INSERT INTO mathe (betrag, id_paper, user) VALUES (:betrag, 100, 10)
ON DUPLIKATE KEY UPDATE betrag = :betrag;

Ein WHERE braucht's für das UPDATE nicht, denn welche Zeile geändert werden soll, ist ja schon durch den unique key festgelegt.

cu,
Andreas a/k/a MudGuard