"INSERT ... ON DUPLICATE KEY UPDATE" verhält sich seltsam

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • "INSERT ... ON DUPLICATE KEY UPDATE" verhält sich seltsam

    Hallo,

    Ich habe ein recht aufwändiges SQL-Statement um mehrere Werte in einer Tabelle wahlweise einzufügen oder wenn sie schon existieren upzudaten. Ich benutze dafür die "INSERT ... ON DUPLICATE KEY UPDATE" Syntax:

    Code:
    INSERT INTO builder_template_setting (`type`, `template_id`, `name`, `value`, `category_id`, `options`)
    
    VALUES
    ('0', 20, 'builder_cfg_page_title', 'Seitentitel 1', '', ''),
    ('0', 20, 'builder_css_title_color', '#a9cc64', '', ''),
    ('0', 20, 'builder_css_title_font', '\'Times New Roman\', Times, serif', '', ''),
    ('0', 20, 'builder_css_title_size', '64.81927710843374', '', ''),
    ('0', 20, 'builder_css_title_vert_pos_three', '112', '', ''),
    ('0', 20, 'builder_css_title_hor_pos_three', '218', '', '')
    
    ON DUPLICATE KEY UPDATE
    
    value=VALUES(value),
    type=IF(VALUES(type)='',type,VALUES(type)),
    category_id=IF(VALUES(category_id)='',category_id,VALUES(category_id)),
    options=IF(VALUES(options)='',options,VALUES(options))
    Hier nochmal formatiert: https://gist.github.com/9f809113cc11eb56a765

    In der Tabellenstruktur ist template_id und name zusammen ein unique index, so dass wenn es die beiden in der kombination schon gibt, der entsprechende Record upgedatet anstatt insertet wird:
    Click for large view

    Wenn ich das Statement oben zum ersten mal ausführe werden die Werte korrekt eingetragen. Wenn ich es das 2te mal einfüge, so dass er updatet anstatt zu inserten Werden die Felder durcheinandergeschmissen. Bei value (also der spalte value) stehen dann werte die zu anderen namen gehören, und das auch nicht immer, manchmal geht's, manchmal geht's nicht.

  • #2
    Ok das Problem ist gelöst. Es war tatsächlich ein Bug in MySQL:

    MySQL :: Re: INSERT INTO ... ON DUPLICATE KEY UPDATE

    Kommentar

    Lädt...
    X