Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Rollback-Abfrage

Manchmal müssen Sie möglicherweise die an der MySQL-Datenbank vorgenommenen Änderungen rückgängig machen. Sie können dies ganz einfach mit der MySQL-Rollback-Abfrage tun. Hier erfahren Sie, wie Sie die MySQL-Datenbank mit dem MySQL-Rollback-Befehl zurücksetzen.

Wie funktioniert MySQL-Rollback?

Mit der MySQL-Rollback-Anweisung können Sie eine oder mehrere kürzlich ausgeführte Anweisungen rückgängig machen oder rückgängig machen. Wenn Sie beispielsweise versehentlich Zeilen gelöscht oder aktualisiert haben, können Sie diese Anweisungen mit MySQL zurücksetzen und die ursprünglichen Datenbanken wiederherstellen. Das MySQL-Rollback funktioniert jedoch nur, wenn die Datenbankänderungen NICHT in die Datenbank übernommen wurden.

Bonus-Lesetext:Verwendung von MySQL Rollup

Können wir nach dem Festschreiben in MySQL ein Rollback durchführen

Nein. Leider können Sie Änderungen, die an die Datenbank übertragen wurden, nicht rückgängig machen.

So führen Sie ein Rollback der MySQL-Datenbank durch

Bitte beachten Sie, dass MySQL standardmäßig so konfiguriert ist, dass jede SQL-Abfrage automatisch festgeschrieben wird. Daher ist es wichtig, die automatische Festschreibung in MySQL mit der folgenden Anweisung auszuschalten, wenn Sie MySQL Rollback verwenden möchten.

Melden Sie sich bei der MySQL-Datenbank an und führen Sie den folgenden Befehl aus, um Autocommit zu deaktivieren

SET autocommit = 0

Oder

SET autocommit = OFF

Sie verwenden die folgende Anweisung, um den Autocommit-Modus explizit zu aktivieren:

SET autocommit = 1

Oder

SET autocommit = ON

Bonuslektüre:So überprüfen Sie die MySQL-Version

Nehmen wir an, Sie haben die folgende Tabelle sales(product,order_date,sale) . Wir werden uns ansehen, wie MySQL-Rollback nach dem Löschbefehl ausgeführt wird.

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

Lassen Sie uns nun die Autocommit-Funktion wie oben erwähnt ausschalten,

mysql> set autocommit=0;

Lassen Sie uns als Nächstes alle Zeilen in der Verkaufstabelle löschen.

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

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

Wie Sie sehen können, wurden alle 5 Zeilen in der Verkaufstabelle gelöscht.

Lassen Sie uns nun MySQL Rollback nach dem Löschbefehl ausführen

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

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

Wie Sie sehen können, wurden die 5 gelöschten Zeilen wiederhergestellt, da die Änderungen nicht festgeschrieben wurden. Wenn Sie jedoch nach dem Löschen und vor dem ROLLBACK-Befehl Probleme mit der COMMIT-Anweisung gehabt hätten, hätte MySQL Ihre Tabelle nicht wiederhergestellt.

Bonuslektüre:So deaktivieren Sie die Fremdschlüsselprüfung in MySQL

MySQL-Rollback-Update-Befehl

Ebenso können Sie den Update-Befehl rückgängig machen. Lassen Sie uns das Angebot aktualisieren Spalte in den obigen Verkäufen Tabelle.

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

Wie Sie sehen können, haben wir den Wert der Verkaufsspalte verdoppelt. Lassen Sie uns nun den Update-Befehl zurücksetzen.

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

Wie Sie sehen können, wurden die alten Werte der Verkaufsspalte wiederhergestellt.

Sie können MySQL-Rollback auch in gespeicherte Prozeduren und MySQL-Transaktionen für MySQL-Rollback bei Fehler einschließen. Der Schlüssel ist, Autocommit zu deaktivieren, um MySQL-Rollback auszuführen.

Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!