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:
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.
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))
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.
Kommentar