Mysql
 sql >> Database >  >> RDS >> Mysql

Query di ripristino MySQL

A volte potrebbe essere necessario annullare le modifiche apportate al database MySQL. Puoi farlo facilmente usando la query MySQL Rollback. Ecco come eseguire il rollback del database MySQL utilizzando il comando MySQL Rollback.

Come funziona il rollback di MySQL

L'istruzione MySQL Rollback consente di eseguire il rollback o l'annullamento di un'altra istruzione che è stata eseguita di recente. Ad esempio, se hai accidentalmente cancellato o aggiornato righe, puoi utilizzare MySQL per il rollback di tali istruzioni e ripristinare i database originali. Tuttavia, il rollback di MySQL funziona solo se le modifiche al database NON sono state salvate nel database.

Bonus Leggi:Come utilizzare MySQL Rollup

Possiamo eseguire il rollback dopo il commit in MySQL

No. Sfortunatamente non puoi annullare le modifiche che sono state salvate nel database.

Come eseguire il rollback del database MySQL

Si noti che, per impostazione predefinita, MySQL è configurato per eseguire il commit automatico di ogni query SQL. Quindi è importante disattivare il commit automatico in MySQL usando la seguente istruzione, se vuoi essere in grado di usare MySQL Rollback.

Accedi al database MySQL ed esegui il comando seguente per disabilitare l'autocommit

SET autocommit = 0

Oppure

SET autocommit = OFF

Utilizzare la seguente istruzione per abilitare esplicitamente la modalità di commit automatico:

SET autocommit = 1

Oppure

SET autocommit = ON

Bonus Leggi:Come controllare la versione di MySQL

Supponiamo che tu abbia la seguente tabella sales(product,order_date,sale) . Vedremo come eseguire il rollback di MySQL dopo il comando di eliminazione.

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

Ora disattiviamo l'autocommit come menzionato sopra,

mysql> set autocommit=0;

Quindi, eliminiamo tutte le righe nella tabella delle vendite.

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

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

Come puoi vedere tutte le 5 righe nella tabella delle vendite sono state eliminate.

Ora, emettiamo MySQL Rollback dopo il comando di eliminazione

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

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

Come puoi vedere, le 5 righe eliminate sono state ripristinate poiché le modifiche non sono state salvate. Tuttavia, se avevi problemi con l'istruzione COMMIT dopo l'eliminazione e prima del comando ROLLBACK, MySQL non avrebbe ripristinato la tua tabella.

Bonus Leggi:come disabilitare il controllo della chiave esterna in MySQL

Comando di aggiornamento rollback MySQL

Allo stesso modo, puoi eseguire il rollback del comando di aggiornamento. Aggiorniamo la vendita colonna sopra vendite tabella.

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

Come puoi vedere abbiamo raddoppiato il valore della colonna di vendita. Ora esegui il rollback del comando di aggiornamento.

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

Come puoi vedere la colonna vendita sono stati ripristinati i vecchi valori.

Puoi anche includere MySQL Rollback nelle stored procedure e transazioni MySQL per MySQL Rollback in caso di errore. La chiave è disabilitare l'autocommit per eseguire il rollback di MySQL.

Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!