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!