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

Consulta de reversión de MySQL

En ocasiones, es posible que deba deshacer los cambios realizados en la base de datos MySQL. Puede hacerlo fácilmente usando la consulta MySQL Rollback. Aquí se explica cómo revertir la base de datos MySQL usando el comando MySQL Rollback.

¿Cómo funciona la reversión de MySQL?

La declaración MySQL Rollback le permite revertir o deshacer una declaración más que se haya ejecutado recientemente. Por ejemplo, si ha eliminado o actualizado filas accidentalmente, puede usar MySQL para revertir esas declaraciones y restaurar las bases de datos originales. Sin embargo, la reversión de MySQL solo funciona si los cambios de la base de datos NO se han confirmado en la base de datos.

Lectura adicional:Cómo usar MySQL Rollup

¿Podemos retroceder después de confirmar en MySQL

No. Lamentablemente, no puede deshacer los cambios que se han confirmado en la base de datos.

Cómo revertir la base de datos MySQL

Tenga en cuenta que, de forma predeterminada, MySQL está configurado para confirmar automáticamente cada consulta SQL. Por lo tanto, es importante desactivar la confirmación automática en MySQL usando la siguiente declaración, si desea poder usar MySQL Rollback.

Inicie sesión en la base de datos MySQL y ejecute el siguiente comando para deshabilitar la confirmación automática

SET autocommit = 0

O

SET autocommit = OFF

Utiliza la siguiente declaración para habilitar el modo de confirmación automática explícitamente:

SET autocommit = 1

O

SET autocommit = ON

Lectura adicional:Cómo comprobar la versión de MySQL

Supongamos que tiene la siguiente tabla sales(product,order_date,sale) . Veremos cómo emitir la reversión de MySQL después del comando de eliminación.

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

Ahora desactivemos la confirmación automática como se mencionó anteriormente,

mysql> set autocommit=0;

A continuación, eliminemos todas las filas de la tabla de ventas.

mysql> delete from sales;
Query OK, 5 rows affected (0.00 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        0 |
+----------+

Como puede ver, se han eliminado las 5 filas de la tabla de ventas.

Ahora, emitamos MySQL Rollback después del comando de eliminación

mysql> rollback;
Query OK, 0 rows affected (0.07 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        5 |
+----------+

Como puede ver, las 5 filas eliminadas se han restaurado ya que los cambios no se confirmaron. Sin embargo, si tuvo problemas con la instrucción COMMIT después de la eliminación y antes del comando ROLLBACK, MySQL no habría restaurado su tabla.

Lectura adicional:Cómo deshabilitar la verificación de clave externa en MySQL

Comando de actualización revertida de MySQL

Del mismo modo, puede revertir el comando de actualización. Actualicemos la oferta columna arriba de ventas mesa.

mysql> set autocommit=0;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+
5 rows in set (0.00 sec)

mysql> update sales set sale=sale*2;
Query OK, 5 rows affected (0.05 sec)


mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   40 |
| B       | 2020-01-02 |   50 |
| B       | 2020-01-03 |   30 |
| A       | 2020-01-04 |   60 |
| A       | 2020-01-05 |   40 |
+---------+------------+------+

Como puede ver, hemos duplicado el valor de la columna de venta. Ahora permítanos deshacer el comando de actualización.

mysql> rollback;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

Como puede ver, los valores antiguos de la columna de venta se han restaurado.

También puede incluir MySQL Rollback en procedimientos almacenados y transacciones de MySQL para MySQL Rollback en caso de error. La clave es deshabilitar la confirmación automática para ejecutar la reversión de MySQL.

Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!