Opened 12 years ago
Last modified 9 years ago
#189 closed Erweiterung
configuration_key unique machen — at Initial Version
| Reported by: | Volker Rehn | Owned by: | somebody |
|---|---|---|---|
| Priority: | normal | Milestone: | modified-shop-2.0.2.0 |
| Component: | Shop | Version: | 1.06 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description
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:
INSERT INTO configuration ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added)
SELECT 'MODULE_PAYMENT_BANKTRANSFER_CI', , '6', '0', now() FROM configuration
WHERE NOT EXISTS (SELECT 1 FROM configuration WHERE configuration_key = 'MODULE_PAYMENT_BANKTRANSFER_CI')
LIMIT 1;
Tabelle configuration sollte sowieso den configuration_key unique haben. Denn zwei Sätze mit dem gleichen configuration_key sind falsch.
Dann könnte man das insert so schreiben:
INSERT INTO configuration ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) VALUES ('MODULE_PAYMENT_BANKTRANSFER_CI', , '6', '0', now())
ON DUPLICATE KEY UPDATE configuration_key = configuration_key
oder so:
INSERT IGNORE INTO configuration ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) VALUES ('MODULE_PAYMENT_BANKTRANSFER_CI', , '6', '0', now())
INSERT IGNORE hat den Nachteil, dass *alle* Fehler ignoriert werden, ON DUPLICATE hat dieses pseudo-update am Ende, ist aber sicherer.
