Salome
Te voy a poner un ejemplo del concepto de transacciones en mysql, ya tu buscaras como implementarlas en el lenguaje.
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, 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 |
| 4 | cristian | detalle cristian |
+----------+----------+------------------+
mysql>
Fijate que si dentro de una transacción se hace rollback, los cambios se deshacen y la tabla queda tal como estaba.
Pero si se hace commit los cambios se guardan en definitiva.
Estos comandos no se ejecutan por defecto. Por fuera de la transacción, mysql tiene un autocommit. Lo que quiere decir que después de hacer cambios en los datos , estos no se pueden recuperar de ninguna forma.