Mysql
 sql >> Database >  >> RDS >> Mysql

PHP MySQL inserendo dati in più tabelle

Una soluzione sarebbe utilizzare Transazioni , che consentono di ottenere il comportamento "tutto o niente".

L'idea è la seguente:

  • avvii una transazione
  • fai i tuoi inserti/aggiornamenti
  • se tutto è a posto, esegui il commit della transazione; che salverà tutto ciò che hai fatto durante questa transazione
  • in caso contrario, esegui il rollback della transazione; e tutto ciò che hai fatto verrà annullato.
  • se non esegui il commit e ti disconnetti (se il tuo script PHP muore, per esempio) , non verrà eseguito alcun commit e ciò che hai fatto durante la transazione non impegnata verrà automaticamente annullato.

Per ulteriori informazioni, puoi dare un'occhiata a 12.4.1. Sintassi START TRANSACTION, COMMIT e ROLLBACK , per MySQL.


Tieni presente che le transazioni sono disponibili solo per alcuni motori DB :

  • MyISAM non supporta le transazioni
  • InnoDB fa (supporta anche chiavi esterne, per esempio -- è molto più avanzato di MyISAM) .