Řešením by bylo použít Transakce , které umožňují získat chování „vše nebo nic“.
Myšlenka je následující:
- zahájíte transakci
- provádíte vložení/aktualizace
- pokud je vše v pořádku, potvrdíte transakci; která uloží vše, co jste během této transakce provedli
- pokud ne, vrátíte transakci zpět; a vše, co jste v něm udělali, bude zrušeno.
- pokud neprovedete potvrzení a neodpojíte se (například pokud váš skript PHP zanikne) , nic nebude potvrzeno a to, co jste provedli během transakce bez závazku, bude automaticky vráceno zpět.
Pro více informací se můžete podívat na 12.4.1. START TRANSACTION, COMMIT a ROLLBACK syntaxe , pro MySQL.
Upozorňujeme, že transakce jsou dostupné pouze pro některé DB motory:
- MyISAM nepodporuje transakce
- InnoDB ano (podporuje například také cizí klíče – je mnohem pokročilejší než MyISAM) .