sql >> Base de Datos >  >> RDS >> Mysql

¿Mysql_query confirma todo?

La antigua extensión mysql no tiene funciones específicas para el control de transacciones, pero puede emitir sentencias SQL para hacer lo que quiera.

Puede desactivar implícitamente la confirmación automática durante una transacción simplemente iniciando una transacción:

mysql_query("START TRANSACTION");

Tan pronto como COMMIT o ROLLBACK, el modo de confirmación automática volverá al valor predeterminado.

mysql_query("COMMIT"); // or ROLLBACK

Puede desactivar la confirmación automática para toda su sesión configurando una variable de sesión:

mysql_query("SET autocommit=0");

O cámbielo globalmente en su instancia de MySQL para que cambie el valor predeterminado para todas las sesiones:

mysql_query("SET GLOBAL autocommit=0");

O configúrelo para cambiar la configuración global al iniciar el servicio MySQL editando /etc/my.cnf:

[mysqld]
autocommit=0

Si usa MySQL 5.1, debe hacer esto de forma ligeramente diferente:

[mysqld]
init_connect='SET autocommit=0'

Probablemente ya lo sepa, pero vale la pena repetir que las transacciones solo significan algo si está utilizando tablas InnoDB. Las tablas MyISAM no admiten transacciones, por lo que siempre se confirman automáticamente, independientemente de su configuración. Lo mismo ocurre con varios otros motores de almacenamiento, incluidos MEMORY y CSV.