sql >> Databáze >  >> RDS >> Mysql

MySQL Rollback Query

Někdy může být nutné vrátit zpět změny provedené v databázi MySQL. Můžete to snadno udělat pomocí dotazu MySQL Rollback. Zde je návod, jak vrátit zpět databázi MySQL pomocí příkazu MySQL Rollback.

Jak funguje vrácení MySQL

Příkaz MySQL Rollback vám umožňuje vrátit zpět nebo vrátit další příkazy, které byly nedávno provedeny. Pokud jste například omylem odstranili nebo aktualizovali řádky, můžete tyto příkazy vrátit zpět a obnovit původní databáze. MySQL rollback však funguje pouze v případě, že změny databáze NEBYLY potvrzeny do databáze.

Bonusové čtení:Jak používat MySQL Rollup

Můžeme se vrátit zpět po odevzdání v MySQL

Ne. Bohužel nemůžete vrátit změny, které byly potvrzeny do databáze.

Jak vrátit zpět databázi MySQL

Upozorňujeme, že ve výchozím nastavení je MySQL nakonfigurováno tak, aby automaticky odevzdalo každý dotaz SQL. Proto je důležité vypnout automatické potvrzení v MySQL pomocí následujícího příkazu, pokud chcete mít možnost používat MySQL Rollback.

Přihlaste se do databáze MySQL a spusťte následující příkaz pro zakázání automatického potvrzení

SET autocommit = 0

Nebo

SET autocommit = OFF

Chcete-li explicitně povolit režim automatického potvrzení, použijte následující příkaz:

SET autocommit = 1

Nebo

SET autocommit = ON

Bonusové čtení:Jak zkontrolovat verzi MySQL

Řekněme, že máte následující tabulku prodej(produkt,datum_objednávky,prodej) . Podíváme se, jak provést vrácení MySQL po příkazu delete.

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

Nyní vypněte autocommit, jak je uvedeno výše,

mysql> set autocommit=0;

Dále smažeme všechny řádky v tabulce prodeje.

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

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

Jak můžete vidět, všech 5 řádků v prodejní tabulce bylo smazáno.

Nyní vydáme MySQL Rollback po příkazu delete

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

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

Jak můžete vidět, 5 odstraněných řádků bylo obnoveno, protože změny nebyly potvrzeny. Pokud byste však měli problémy s příkazem COMMIT po smazání a před příkazem ROLLBACK, pak by MySQL vaši tabulku neobnovilo.

Bonusové čtení:Jak zakázat kontrolu cizího klíče v MySQL

Příkaz aktualizace MySQL Rollback Update

Podobně můžete příkaz vrátit zpět aktualizaci. Dovolte nám aktualizovat prodej ve sloupci prodej tabulka.

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

Jak vidíte, zdvojnásobili jsme hodnotu sloupce prodeje. Nyní pojďme vrátit příkaz k aktualizaci.

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

Jak můžete vidět, staré hodnoty sloupce prodeje byly obnoveny.

Můžete také zahrnout vrácení MySQL do uložených procedur a transakce MySQL pro vrácení MySQL při chybě. Klíčem je zakázat automatické potvrzení pro provedení vrácení MySQL.

Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Vyzkoušejte to ještě dnes!

  1. Jak shodit stůl v oracle

  2. Jak zrušit omezení cizího klíče v databázi SQL Server pro všechny tabulky - SQL Server / Výukový program TSQL, část 72

  3. Připojení Oracle k SQL Serveru z Windows

  4. Jak resetovat sekvenci v postgresu a vyplnit sloupec ID novými daty?