Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête de restauration MySQL

Parfois, vous devrez peut-être annuler les modifications apportées à la base de données MySQL. Vous pouvez facilement le faire en utilisant la requête MySQL Rollback. Voici comment restaurer la base de données MySQL à l'aide de la commande MySQL Rollback.

Comment fonctionne la restauration MySQL ?

L'instruction MySQL Rollback vous permet d'annuler ou d'annuler une ou plusieurs instructions récemment exécutées. Par exemple, si vous avez accidentellement supprimé ou mis à jour des lignes, vous pouvez utiliser MySQL pour annuler ces instructions et restaurer les bases de données d'origine. Cependant, la restauration de MySQL ne fonctionne que si les modifications de la base de données n'ont PAS été validées dans la base de données.

Lecture bonus :Comment utiliser MySQL Rollup

Pouvons-nous revenir en arrière après un commit dans MySQL

Non. Malheureusement, vous ne pouvez pas annuler les modifications qui ont été validées dans la base de données.

Comment restaurer la base de données MySQL

Veuillez noter que par défaut, MySQL est configuré pour valider automatiquement chaque requête SQL. Il est donc important de désactiver la validation automatique dans MySQL à l'aide de l'instruction suivante, si vous souhaitez pouvoir utiliser MySQL Rollback.

Connectez-vous à la base de données MySQL et exécutez la commande suivante pour désactiver la validation automatique

SET autocommit = 0

Ou

SET autocommit = OFF

Vous utilisez l'instruction suivante pour activer explicitement le mode autocommit :

SET autocommit = 1

Ou

SET autocommit = ON

Lecture bonus :Comment vérifier la version de MySQL

Disons que vous avez le tableau suivant sales(product,order_date,sale) . Nous verrons comment émettre MySQL rollback après la commande de suppression.

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 |
+---------+------------+------+

Désactivons maintenant la validation automatique comme mentionné ci-dessus,

mysql> set autocommit=0;

Ensuite, supprimons toutes les lignes de la table des ventes.

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

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

Comme vous pouvez le voir, les 5 lignes du tableau des ventes ont été supprimées.

Maintenant, lançons MySQL Rollback après la commande de suppression

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

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

Comme vous pouvez le voir, les 5 lignes supprimées ont été restaurées car les modifications n'ont pas été validées. Cependant, si vous aviez des problèmes avec l'instruction COMMIT après la suppression et avant la commande ROLLBACK, MySQL n'aurait pas restauré votre table.

Lecture bonus :Comment désactiver la vérification de clé étrangère dans MySQL

Commande MySQL Rollback Update

De même, vous pouvez annuler la commande de mise à jour. Mettons à jour la vente colonne au-dessus des ventes tableau.

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 |
+---------+------------+------+

Comme vous pouvez le voir, nous avons doublé la valeur de la colonne des ventes. Maintenant, annulons la commande de mise à jour.

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 |
+---------+------------+------+

Comme vous pouvez le voir, les anciennes valeurs de la colonne de vente ont été restaurées.

Vous pouvez également inclure MySQL Rollback dans les procédures stockées et les transactions MySQL pour MySQL Rollback en cas d'erreur. La clé est de désactiver la validation automatique pour exécuter la restauration MySQL.

Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !