解決策は、トランザクション を使用することです。 、「オールオアナッシング」の動作を可能にします。
アイデアは次のとおりです:
- トランザクションを開始します
- 挿入/更新を行います
- すべてがOKの場合、トランザクションをコミットします;これにより、このトランザクション中に行ったすべてのことが保存されます
- そうでない場合は、トランザクションをロールバックします;そして、その中で行ったすべてがキャンセルされます。
- コミットして切断しない場合(たとえば、PHPスクリプトが停止した場合) 、何もコミットされず、コミットされていないトランザクション中に行ったことは自動的にロールバックされます。
詳細については、12.4.1を参照してください。 START TRANSACTION、COMMIT、およびROLLBACK構文 、MySQLの場合。
トランザクションは一部のDBエンジンでのみ利用可能であることに注意してください: