MySQL: INSERT or UPDATE in einer Query Frage MySQL: INSERT or UPDATE in einer Query zu Favoriten hinzufügen

Daumen hoch 0 Daumen runter

Hallo zusammen,

gibt es in MySQL die Möglichkeit in einer Query zu prüfen, ob ein bestimmter Eintrag bereits existiert (=> UPDATE) oder nicht (=> INSERT)?

Grüße,

Martin

Antworten


Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

Suchst du vielleicht REPLACE?

Diese Antwort als GUT bewerten 2 Diese Antwort als SCHLECHT bewerten

Hey schau dir diesen Link an.

http://dev.mysql.com/doc/refman/5.1/de/insert-on-duplicate.html

Wenn es einen Eintrag gibt wird er geupdatet ansonsten wird ein neuer erstellt.

Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Eine andere Möglichkeit wäre das Ganze in der Applikationsschicht zu verstecken. So gibt es z.B. eine Methode save und diese entscheidet dann anhand eines Kriteriums, ob ein Update oder ein Insert gemacht werden soll. In der Regel kann man dies am Vorhandensein der Unique ID festmachen.

Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Genau so (Applikationsschicht & prüfen nach Unique ID) würde ich das machen, was allerdings zwei Queries zur Folge hätte:

  1. Prüfen ob Eintrag mit Unique ID existiert (SELECT)

ja -> UPDATE

nein -> INSERT

Aus Performance-Gründen habe ich mich jetzt gefragt, ob man das auch in einer Query abfackeln kann.

Okay, kommt drauf an wie du arbeitest. Sagen wir mal du hast einen ActiveRecord. Dann kannst du ja nur eine Unique ID haben, wenn du den schon mal gespeichert hast, da diese ja z.B. via AutoIncrement oder bei Oracle via Sequence beim INSERT erst vergeben wird.

thorsten am 15.12.2011

Deine Antwort

Registrierter User Bereits registriert? Bitte logge dich vor dem Antworten ein.

Deine Daten