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.

Change History (0)

Note: See TracTickets for help on using tickets.