MichaelR: INSERT + UPDATE SQL

Hallo,

ich hab folgendes Problem: Eine Tabelle soll aktualisiert werden, d. h. entweder wird ein neuer Datensatz mittels INSERT eingefügt oder falls bereits ein solcher existiert, soll er aktualisiert werden (normalerweise mit UPDATE).

Gibt es eine Möglichkeit bei MySQL einen kombinierten Insert/Update-Befehl auszuführen? D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.

Grüße,
Michael

  1. Hi,

    du kannst z.b. zuerst den UPDATE Befehl schicken, danach überprüfen, wieviele Rows/Records betroffen sind und wenn dem gleich 0 ist, dann führst du das INSERT aus. Die PHP-MySQL Funktion heisst sogar mysql_affected_rows, da schau an.

    Je nach Version von MySQL kannst du diese Logik auch evt in eine Stored Procedure packen und den Zugriff zu abstrahieren.

    Gruss
    Frank

  2. Hallo.

    D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.

    Das könntest du doch mit einer einfachen if-else-Anweisung lösen, oder?

    MfG, Kungschu.

    --
    Brain: an apparatus with which we think we think.
    1. Hallo,

      D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.

      Das könntest du doch mit einer einfachen if-else-Anweisung lösen, oder?

      Wie denn?
      Also, das was ich bisher im Sinn hatte, war eine Abfrage zu machen, ob der Datensatz existiert, falls ja ein UPDATE nachzuschieben. Falls kein Datensatz existiert dann ein INSERT.

      Aber der Vorschlag von Frank klingt auch gut, den probiere ich grad :-)

      Grüße,
      Michael

      1. Hallo.

        Also, das was ich bisher im Sinn hatte, war eine Abfrage zu machen, ob der Datensatz existiert, falls ja ein UPDATE nachzuschieben. Falls kein Datensatz existiert dann ein INSERT.

        So hatte ich es im Prinzip gemeint.

        Aber der Vorschlag von Frank klingt auch gut, den probiere ich grad :-)

        Das ist der professionelle Vorschlag; verfolge ihn.

        MfG, Kungschu.

        --
        Brain: an apparatus with which we think we think.
  3. Hello,

    Gibt es eine Möglichkeit bei MySQL einen kombinierten Insert/Update-Befehl auszuführen? D.h. ist ein Datensatz mit einem bestimmten Merkmal nicht vorhanden soll er hinzugefügt werden, andernfalls mit den neuen Werten aktualisiert werden.

    INSERT...ON DUPLICATE KEY UPDATE...

    MfG
    Rouven

    --
    -------------------
    Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1