Jump to content
Sign in to follow this  
maui muc

bedingtes update

Recommended Posts

Hallo Leute,


heute habe ich ein, wie ich meine, echt kniffeliges Problem.


Über ein Formular füttere ich eine Personentabelle mit den ublichen Werten wie Name, eMail usw.. Die Tabelle hat natürlich auch einen Primärschlüssel. Jetzt kann es aber vorkommen, dass sich bei der Eingabe ein Tippfehler einschleicht. Sollte das der Fall sein, möchte ich, dass der User das Formular korrekt ausfüllt und erneut abschickt. Stimmt dann ein gewisser Satz von Daten überein, soll ein UPDATE durchgeführt werden anderenfalls ein INSERT.


Dazu hatte ich folgende Idee:

REPLACE INTO 
students (id,firstname,lastname,email) 
VALUES(
(SELECT id 
	FROM students 
	WHERE firstname="Max" 
	AND lastname="Mustermann") 
, "Max", "Mustermann","korrigierte eMail");

Das funktioniert aber nicht, weil ich im subquery auf die selbe Tabelle verweise. ERROR 1093 (HY000): You can't specify target table 'students' for update in FROM clause


Edit:

REPLACE verhält sich für meine Zwecke ganz praktisch. ist das Feld id leer, wird via auto_increment eine neue id vergeben und ein neuer Datensatz erzeugt. Ist die ID hingegen gegeben werde die Daten überschrieben.


Gibt es vielleicht so etwas wie eine IF Abfrage?


Hat einer von euch einen Tipp wie dieses verzwickte Problem Lösen kann?


Gruß


Stefan

Share this post


Link to post
Share on other sites

Da gibts doch die Spalte ID ...

Übergib die doch im Formular mit oder speicher die in einer Session ...

Dann hast immer den richtigen Datensatz :-D

Share this post


Link to post
Share on other sites

Genau das möchte ich eben umgehen. Wenn ich die ID übergebe, dann kann ich auch gleich mit INSERT ... ON DUPLICAT KEY ... ; arbeiten.


Gibt es vielleicht eine Kontrollstrucktur in SQL die folgendes leistet?

WENN (query) DANN (update) SONST (insert)


Gruß


Stefan

Share this post


Link to post
Share on other sites

Juhu, ich habs. SQL ist einfach nur super cool.


Ich muss einfach nur einen zweiten INDEX setzen. Der muss dann natülich aus den entsprechenden Feldern bestehen die ggf. ein UPDATE erfahren sollen. Im obigen Beispiel wäre das dann:

UNIQUE (firstname,lastname)

Hat man nun einen eindeutigen Schlüssel, reich ein:

INSERT INTO ... ON DUPLICAT KEY UPDAET ...;

Das erspart mir ca. 30 Zeilen PHP Code. :-D:-D:-D

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...