SQL if exist update else insert

  • Hi,
    Ich komme einfach nicht drauf wie ich das SQL richtig schreiben muss :D
    Habe 2 Spalen:

    Code
    VARCHAR UNIQUE `id`
    VARCHAR `text`


    Ich möchte etwa sowas

    SQL
    IF EXIST UPDATE `table`(`text`) WHERE `id`='ABC' ELSE INSERT INTO `table`(`id, `text`) VALUES(:id, :text)


    Wolf

  • ON DUPLICATE KEY UPDATE


    vorweg: macht man nicht, wenn KEY auto increment id (int) ist, da sonst "id gaps" (Lücken) enstehen.


    Das hier sollte es tun:

    SQL
    INSERT INTO 
        `table`
    (`id, `text`) 
    VALUES
    (:id, :text)
    ON DUPLICATE KEY UPDATE
    `text` = :text


    damit kann man sich zB auch eine Query sparen - wobei das nicht ganz stimmt.
    Man spart sich eher eine Anfrage an den Sql-Server. ON DUPLICATE KEY UPDATE arbeitet nämlich in der Art:
    - INSERT ausführen (AUTO_INCREMENT++)
    - kann nicht INSERT, da DUPLICATE KEY ?` -> dann UPDATE ausfürhen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!