En forma predeterminada, cada cliente se que conecta al servidor
MySQL comienza con el modo de autocommit habilitado, lo cual
automáticamente confirma (commit) cada sentencia SQL ejecutada.
Para utilizar transacciones de múltiples sentencias se puede
deshabilitar el modo autocommit con la sentencia SQL
SET AUTOCOMMIT = 0
y emplear
COMMIT
y ROLLBACK
para
confirmar o cancelar la transacción. Si se desea dejar activado
autocommit, se pueden encerrar las transacciones entre las
sentencias START TRANSACTION
y
COMMIT
o ROLLBACK
. El
siguiente ejemplo muestra dos transacciones. La primera se
confirma, la segunda se cancela.
shell> mysql test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.23.50-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A)) -> ENGINE=InnoDB; Query OK, 0 rows affected (0.00 sec) mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO CUSTOMER VALUES (10, 'Heikki'); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.00 sec) mysql> SET AUTOCOMMIT=0; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO CUSTOMER VALUES (15, 'John'); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM CUSTOMER; +------+--------+ | A | B | +------+--------+ | 10 | Heikki | +------+--------+ 1 row in set (0.00 sec) mysql>
En APIs como PHP, Perl DBI/DBD, JDBC, ODBC, o la interface de
llamadas C estándar de MySQL, se pueden enviar sentencias de
control de transacciones como COMMIT
al
servidor MySQL en forma de cadenas, igual que otras sentencias
SQL como SELECT
o INSERT
.
Algunas APIs también ofrecen funciones o métodos especiales
para confirmación y cancelación de transacciones.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.