[MySQL] insert OR update

BenArt

Grillmeister
7 Mai 2006
26
0
Hallo,

Hab mal wieder ein kleines Problem:
Ich habe eine Tabelle, die einen sagen wir mal so aufgebaut ist:
ID, x, y, z, info

ID ist ein primary Key und x, y, z sind Koordinaten. Nur die Kombination aus allen drei Koordinaten ergibt einen eindeutigen Wert.

Nun habe ich ein Skript, der die Tabelle aktualisieren soll. Diesem Skript sind aber nur die Koordinaten, sowe die info bekannt. Das Skript soll nun 2 Möglichkeiten haben:
1. Die Koordinatenkombination wird in der DB gefunden, dann soll es info nur aktualisieren.
2. Die Koordinatenkombination wird nicht gefunden, dann soll ein neuer Eintrag in die DB gemacht werden.

Ich finde gerade einfach keine braucbare Lösung, wie ich das mit einer MySQL Abfrage realisieren kann.

Also helft mir bitte :)

MfG BenArt
 
So in der Art:
Code:
[FONT=Courier New][B][COLOR=#9932cc]INSERT[/COLOR][/B] [B][COLOR=#9932cc]INTO[/COLOR][/B] `table` (`x`,`y`,`z`,`info`) [B][COLOR=#9932cc][B][COLOR=#9932cc]VALUES[/COLOR][/B] [/COLOR][/B][COLOR=#9932cc]([/COLOR]0,0,0,'test'[COLOR=#9932cc])[/COLOR] 
[B][COLOR=#9932cc]ON[/COLOR][/B] [B][COLOR=DarkOrchid]DUPLICATE [/COLOR][COLOR=#9932cc]KEY[/COLOR][/B] [B][COLOR=#9932cc]UPDATE[/COLOR][/B] `info`='newvalue'[/FONT]
Weitere Infos im Manual, direkt bei INSERT:
https://dev.mysql.com/doc/refman/5.0/en/insert.html

edit:
Hast du grade editiert, oder hab ich das übersehen ? :think:

Wenn (x,y,z) eindeutig ist, dann brauchst du ID nicht. Meine Query funktioniert nur, wenn (x,y,z) der PRIMARY-Key ist.
 
danke, tH so nen Query ist genial :D
wusste gar net das es das gibt, soltle wirklich mal ins Manual sehen, habe das vorher mit nem Update, affected_rows und insert gelöst :LOL:
 
DAnke für die hilfe, also die ID brauch ich auch. Ich bin nun aber auf ne Lösung gekommen, den ganzen Mittag rumprobiert ;-) INSERT ... ON DUPLICATE KEY UPDATE geht auch, wenn ich über x,y,z nen unique index ziehe, dann kann id primary key sein :)

MfG BenArt