sql >> Database >  >> RDS >> Mysql

MySQL Rollback-query

Soms moet u de wijzigingen in de MySQL-database ongedaan maken. U kunt dit eenvoudig doen met behulp van MySQL Rollback-query. Hier leest u hoe u de MySQL-database kunt terugdraaien met de opdracht MySQL Rollback.

Hoe werkt het terugdraaien van MySQL

Met MySQL Rollback-statement kunt u nog een recent uitgevoerde instructie terugdraaien of ongedaan maken. Als u bijvoorbeeld per ongeluk rijen hebt verwijderd of bijgewerkt, kunt u MySQL gebruiken om die instructies terug te draaien en de oorspronkelijke databases te herstellen. Het terugdraaien van MySQL werkt echter alleen als de databasewijzigingen NIET zijn doorgevoerd in de database.

Bonus lezen:MySQL Rollup gebruiken

Kunnen we terugdraaien na commit in MySQL

Nee. Helaas kunt u wijzigingen die zijn vastgelegd in de database niet ongedaan maken.

MySQL-database terugdraaien

Houd er rekening mee dat MySQL standaard is geconfigureerd om elke SQL-query automatisch door te voeren. Het is dus belangrijk om automatische vastlegging in MySQL uit te schakelen met behulp van de volgende instructie, als u MySQL Rollback wilt kunnen gebruiken.

Log in op de MySQL-database en voer de volgende opdracht uit om autocommit uit te schakelen

SET autocommit = 0

Of

SET autocommit = OFF

U gebruikt de volgende instructie om de autocommit-modus expliciet in te schakelen:

SET autocommit = 1

Of

SET autocommit = ON

Bonus lezen:MySQL-versie controleren

Stel dat u de volgende tabel sales(product,order_date,sale) . heeft . We zullen bekijken hoe MySQL teruggedraaid kan worden na het delete-commando.

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

Laten we nu automatisch vastleggen uitschakelen zoals hierboven vermeld,

mysql> set autocommit=0;

Laten we vervolgens alle rijen in de verkooptabel verwijderen.

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

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

Zoals je kunt zien zijn alle 5 rijen in de verkooptabel verwijderd.

Laten we nu MySQL Rollback uitvoeren na het verwijdercommando

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

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

Zoals u kunt zien, zijn de 5 verwijderde rijen hersteld omdat de wijzigingen niet zijn doorgevoerd. Als u echter problemen had met de COMMIT-instructie na het verwijderen en vóór het ROLLBACK-commando, dan zou MySQL uw tabel niet hebben hersteld.

Bonus Lezen:Hoe u Foreign Key Check in MySQL uitschakelt

MySQL Rollback Update-opdracht

Op dezelfde manier kunt u de update-opdracht terugdraaien. Laten we de uitverkoop bijwerken kolom hierboven verkoop tafel.

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

Zoals u kunt zien, hebben we de waarde van de verkoopkolom verdubbeld. Laten we nu de update-opdracht terugdraaien.

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

Zoals je kunt zien zijn de oude waarden in de verkoopkolom hersteld.

U kunt MySQL Rollback ook opnemen in opgeslagen procedures en MySQL-transacties voor MySQL Rollback on error. De sleutel is om autocommit uit te schakelen om MySQL rollback uit te voeren.

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. ERD-notaties in gegevensmodellering

  2. Fout:Client ondersteunt het door de server gevraagde authenticatieprotocol niet; overweeg om MySQL-client te upgraden

  3. Prestatieproblemen met SQL Server 2012 Enterprise Edition onder CAL-licentieverlening

  4. UTF-8-tekens detecteren in een Latin1-gecodeerde kolom - MySQL