mysql einfügen wenn Zeile nicht existiert, die bereits in einer Tabelle OHNE EINDEUTIGEN FELDER
Suche nun schon eine Weile, wie um dies zu erreichen.
Scheint, dass alle Lösungen müssen eindeutige Felder mit Indizes.
- Ich glaube nicht, dass das funktioniert, ohne eigene Felder...ich meine, in welchem Zustand willst du verwenden?
- Glenn, ohne einen eindeutigen index gibt es keine Möglichkeit zu sagen, wenn es ist eine doppelte Spalte, die würden ein UPDATE benötigen. Zeigen Sie uns Ihre Tabellenstruktur und sagen Sie uns, was Felder, die Sie auslösen möchten die UPDATE-Klausel, und wir können Ihnen eine Antwort geben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
gibt es keine WENN NICHT VORHANDEN syntax in EINFÜGEN, aber Sie könnten nutzen die
ON DUPLICATE KEY Mechanismus. Angenommen, Sie erstellen einen eindeutigen index auf
Vorname, Nachname, dein update Lesen könnte:
was macht die insert-neutral.
Haben Sie bereits als
INSERT OR UPDATE
syntax von mysql, oder wollen Sie die neuesten einfügen werden 'abgebrochen', anstatt die Rückkehr zu einem update ?Edit: nach der reflexion, die die genaue syntax, wie gezeigt, durch afftee, der
ON DUPLICATE KEY
wird nur ausgelöst, durch doppelte Wert auf die primary key-oder zumindest eindeutige Spalten.Eine mögliche Lösung wäre die Verwendung einer
BEFORE INSERT
auslösen, ähnlich wie diese :Wenn Sie möchten, stoppen Sie das auslösen und verhindern, dass das insert, wie es scheint, können Sie diesen Beitrag von Nicolas Lescure gefunden auf [mysql-Dok][1] :
[1]: http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html mysql create trigger-Dokumentation
Gibt es keine 'insert wenn nicht vorhanden' - syntax in Mysql einfügen-Dokumentation.
Zu cicumvent dieses problem, ich preconize verwenden Sie die "Insert ... select" - syntax. Im select-Teil, müssen Sie eine where-Anweisung mit "nicht vorhanden" - syntax.
Zum Beispiel können Sie verwenden: