Update ... Set ...=... ON DUPLICATE KEY SET ...=...

basementmedia

Benutzer
Beiträge
16
Hi zusammen,

beim Insert-Befehl kann man ja einen Duplicate-Key abfangen mit

INSERT INTO ... VALUES ... ON DUPLICATE KEY ID=ID

Geht etwas dergleichen auch mit einem Update-Befehl?
Denn es kann ja auch mal sein, dass eine Update-Operation zu einer Duplette führt.
Folgende Syntax hat bei mir nicht funktioniert:

Update ... Set ...=... ON DUPLICATE KEY SET ...=...

also z.B. UPDATE adressen SET name='peter' WHERE ID=2 ON DUPLICATE KEY SET ID=ID

Ich möchte quasi einfach, dass es - beim Erzeugen einer Dublette nicht zu einem Fatal Error kommt, sondern das Skript dann weiter läuft.

Danke schon mal für eure Tipps.

Grüßle
Daniel
 
Werbung:
wenn die ID, die hier ja wohl der PK sein soll, schon da ist, gibt es dennoch keine doppelte ID nach einem Update, weil nur der Name (als Beispiel) geändert wird.
 
wenn die ID, die hier ja wohl der PK sein soll, schon da ist, gibt es dennoch keine doppelte ID nach einem Update, weil nur der Name (als Beispiel) geändert wird.

Folgendes Fallbeispiel:
Ich habe eine Tabelle mit 3 Spalten: ID (Primary), Vorname und Nachname.
Dann setze ich einen Unique Index über zwei Spalten: Vorname und Nachname.
Ein User trägt Thomas Müller als Datensatz ein. Ein anderer trägt Thomas Meier ein -> Alles noch Paletti.
Nun ändert der Thomas Meier seinen Nachname in Müller.
Der Update-Befehl erzeugt dann einen Fatal Error, weil ja der Unique Index greift. Kann man diesen Fatal Error aushebeln über eben was ähnliches wie Update ... on duplicate key ...

Mein Problem ist nämlich, dass den Update Befehl ein automatisches Script im Hintergrund im abfeuern, das eine ganze Menge Datensätze durchgeht und dabei beim Updaten eben ein Duplicate entstehen kann. Das Skript soll dann einfach weiterlaufen. Stattdessen bricht die Schleife dann aber ab.

Klar: ich könnte vor dem Update immer erst per Select prüfen lassen, dachte aber eben, es ginge etwas einfacher.
 
Wieso soll man das wollen? Man muss immer mit gleichem Namen (Vor- und Nachname) rechnen!
Wenn man einen Unique Index macht braucht man auch Daten, die uniqe sind.
 
Werbung:
Das mit dem Vor- un Nachnamen war nur ein Fallbeispiel. Und trotzdem könnte es in meiner Datenbank ja sein, dass ich gleiche Vor und Nachnamen nicht zulassen will, das mal nur nebenbei.

In meinem Fall führe ich zwei Datenbanken zusammen und da will ich eben verhindern, dass Daten, die bereits in der Datenbank vorhanden sind, nicht zweimal existieren. Wahrscheinlich denk ich da auch ein bisschen zu kompliziert. Ein paar Operationen werden da eben mit Updates geregelt und dabei kann es dann zu Einträgen kommen, die bereits existieren aber eben nur einmal existieren sollen...aber ich seh schon. Ich muss mir über das Skript grundsätzlich nochmal Gedanken machen.

Grüßle und schönen Abend euch
 
Zurück
Oben