sql >> Databasteknik >  >> RDS >> Mysql

MySQL återställningsfråga

Ibland kan du behöva ångra ändringarna som gjorts i MySQL-databasen. Du kan enkelt göra det med MySQL Rollback-fråga. Så här återställer du MySQL-databasen med kommandot MySQL Rollback.

Hur fungerar MySQL-återställning

MySQL Rollback-sats låter dig återställa eller ångra ytterligare en sats som nyligen har körts. Till exempel, om du av misstag har tagit bort eller uppdaterat rader, kan du använda MySQL-återställning av dessa uttalanden och återställa ursprungliga databaser. MySQL-återställning fungerar dock endast om databasändringarna INTE har kopplats till databasen.

Bonusläs:Hur man använder MySQL-samling

Kan vi återställa efter commit i MySQL

Nej. Tyvärr kan du inte ångra ändringar som har registrerats i databasen.

Hur man återställer MySQL-databas

Observera att MySQL som standard är konfigurerat för att automatiskt utföra varje SQL-fråga. Så det är viktigt att stänga av automatisk commit i MySQL med följande uttalande, om du vill kunna använda MySQL Rollback.

Logga in på MySQL-databasen och kör följande kommando för att inaktivera autocommit

SET autocommit = 0

Eller

SET autocommit = OFF

Du använder följande uttalande för att aktivera autocommit-läget uttryckligen:

SET autocommit = 1

Eller

SET autocommit = ON

Bonus Läs:Hur man kontrollerar MySQL-version

Låt oss säga att du har följande tabell försäljning(produkt,orderdatum,rea) . Vi kommer att titta på hur man utfärdar MySQL-återställning efter delete-kommando.

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

Låt oss nu stänga av autocommit som nämnts ovan,

mysql> set autocommit=0;

Låt oss sedan ta bort alla rader i försäljningstabellen.

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

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

Som du kan se har alla de 5 raderna i försäljningstabellen tagits bort.

Låt oss nu utfärda MySQL Återställning efter raderingskommando

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

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

Som du kan se har de 5 raderade raderna återställts sedan ändringarna inte genomfördes. Men om du hade problem med COMMIT-satsen efter radering och före ROLLBACK-kommandot, skulle MySQL inte ha återställt din tabell.

Bonus Läs:Hur man inaktiverar utländsk nyckelkontroll i MySQL

Kommando för MySQL Rollback Update

På samma sätt kan du återställa uppdateringskommandot. Låt oss uppdatera rean kolumnen i ovan försäljning bord.

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

Som du kan se har vi fördubblat värdet på reakolumnen. Låt oss nu återställa uppdateringskommandot.

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

Som du kan se har reakolumnen gamla värden återställts.

Du kan också inkludera MySQL-återställning i lagrade procedurer och MySQL-transaktioner för MySQL-återställning vid fel. Nyckeln är att inaktivera autocommit för att utföra MySQL-återställning.

Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Naturlig (mänsklig alfanumerisk) sortering i Microsoft SQL 2005

  2. postgresql lista och beställ tabeller efter storlek

  3. Få aktuellt AUTO_INCREMENT-värde för valfri tabell

  4. Hur man ändrar prioritet för samtidiga program