Changes between Initial Version and Version 2 of Ticket #189
- Timestamp:
- Feb 13, 2015, 1:11:25 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #189
- Property Milestone modified-shop-2.00 → modified-shop-2.10
- Property Version 1.06 → 2.10
-
Ticket #189 – Description
initial v2 1 1 Aufgefallen beim Erstellen eines update-Pakets: Um die Tabelle configuration gefahrlos und wiederholbar mit inserts zu aktualisieren, muss erst gecheckt werden, ob es die Einträge schon gibt. Das geht zwar mit SQL, ist aber mühsam: 2 2 3 {{{ 3 4 INSERT INTO configuration ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) 4 5 SELECT 'MODULE_PAYMENT_BANKTRANSFER_CI', '', '6', '0', now() FROM configuration 5 6 WHERE NOT EXISTS (SELECT 1 FROM configuration WHERE configuration_key = 'MODULE_PAYMENT_BANKTRANSFER_CI') 6 7 LIMIT 1; 8 }}} 7 9 8 10 Tabelle configuration sollte sowieso den configuration_key unique haben. Denn zwei Sätze mit dem gleichen configuration_key sind falsch. … … 10 12 Dann könnte man das insert so schreiben: 11 13 14 {{{ 12 15 INSERT INTO configuration ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) VALUES ('MODULE_PAYMENT_BANKTRANSFER_CI', '', '6', '0', now()) 13 16 ON DUPLICATE KEY UPDATE configuration_key = configuration_key 17 }}} 14 18 15 19 oder so: 16 20 21 {{{ 17 22 INSERT IGNORE INTO configuration ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) VALUES ('MODULE_PAYMENT_BANKTRANSFER_CI', '', '6', '0', now()) 23 }}} 18 24 19 25 INSERT IGNORE hat den Nachteil, dass *alle* Fehler ignoriert werden, ON DUPLICATE hat dieses pseudo-update am Ende, ist aber sicherer.
