Pregunta: Como manejar transacciones en mysql?
Respuesta: Ver ejemplo
Código MySQL:
Ver original+----------+---------+-----------------+
| idextra1 | nombre1 | detalle1 |
+----------+---------+-----------------+
| 1 | daniel | detalle daniel |
| 2 | daniela | detalle daniela |
+----------+---------+-----------------+
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
+----------+----------+------------------+
| idextra1 | nombre1 | detalle1 |
+----------+----------+------------------+
| 1 | daniel | detalle daniel |
| 2 | daniela | detalle daniela |
| 3 | salome | detalle salome |
| 4 | cristian | detalle cristian |
+----------+----------+------------------+
Query OK, 0 rows affected (0.00 sec)
+----------+---------+-----------------+
| idextra1 | nombre1 | detalle1 |
+----------+---------+-----------------+
| 1 | daniel | detalle daniel |
| 2 | daniela | detalle daniela |
+----------+---------+-----------------+
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
+----------+---------+-----------------+
| idextra1 | nombre1 | detalle1 |
+----------+---------+-----------------+
| 1 | daniel | detalle daniel |
| 2 | daniela | detalle daniela |
| 3 | salome | detalle salome |
+----------+---------+-----------------+
+----------+---------+-----------------+
| idextra1 | nombre1 | detalle1 |
+----------+---------+-----------------+
| 1 | daniel | detalle daniel |
| 2 | daniela | detalle daniela |
+----------+---------+-----------------+
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
+----------+----------+------------------+
| idextra1 | nombre1 | detalle1 |
+----------+----------+------------------+
| 1 | daniel | detalle daniel |
| 2 | daniela | detalle daniela |
| 3 | salome | detalle salome |
| 4 | cristian | detalle cristian |
+----------+----------+------------------+
Query OK, 0 rows affected (0.00 sec)
+----------+----------+------------------+
| idextra1 | nombre1 | detalle1 |
+----------+----------+------------------+
| 1 | daniel | detalle daniel |
| 2 | daniela | detalle daniela |
| 3 | salome | detalle salome |
| 4 | cristian | detalle cristian |
+----------+----------+------------------+
Explicación
Después de iniciada una transacción se pueden realizar 3 acciones:
Commit -> Confirmar cambios definitivos. (Esto termina la transacción)
savepoint -> Confirmar hasta cierto punto de los procesos sin finalizar la transacción.
rollback -> Deshacer cambios desde el inicio de la transacción. (Esto también finaliza la transacción)
Como se muestra en el ejemplo, también se puede hacer rollback hasta el ultimo savepoint guardado.