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

mysql_query esegue il commit di tutto

La vecchia estensione mysql non ha funzioni specifiche per il controllo delle transazioni, ma puoi emettere istruzioni SQL per fare ciò che vuoi.

Puoi disattivare implicitamente l'autocommit per la durata di una transazione semplicemente avviando una transazione:

mysql_query("START TRANSACTION");

Non appena si COMMIT o ROLLBACK, la modalità di autocommit tornerà all'impostazione predefinita.

mysql_query("COMMIT"); // or ROLLBACK

Puoi disattivare l'autocommit per l'intera sessione impostando una variabile di sessione:

mysql_query("SET autocommit=0");

Oppure modificalo a livello globale sulla tua istanza MySQL in modo che cambi l'impostazione predefinita per tutte le sessioni:

mysql_query("SET GLOBAL autocommit=0");

Oppure impostalo per modificare l'impostazione globale all'avvio del servizio MySQL modificando /etc/my.cnf:

[mysqld]
autocommit=0

Se usi MySQL 5.1, devi farlo in modo leggermente diverso:

[mysqld]
init_connect='SET autocommit=0'

Probabilmente lo sai già, ma vale la pena ripetere che le transazioni significano qualcosa solo se stai usando le tabelle InnoDB. Le tabelle MyISAM non supportano le transazioni, quindi sono sempre autocommit indipendentemente dalle tue impostazioni. Lo stesso vale per molti altri motori di archiviazione, inclusi MEMORY e CSV.