Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta de reversão do MySQL


Às vezes você pode precisar desfazer as alterações feitas no banco de dados MySQL. Você pode fazer isso facilmente usando a consulta MySQL Rollback. Veja como reverter o banco de dados MySQL usando o comando MySQL Rollback.


Como funciona a reversão do MySQL


A instrução MySQL Rollback permite reverter ou desfazer mais uma instrução que foi executada recentemente. Por exemplo, se você excluiu ou atualizou linhas acidentalmente, pode usar o MySQL para reverter essas instruções e restaurar os bancos de dados originais. No entanto, a reversão do MySQL funciona apenas se as alterações do banco de dados NÃO tiverem sido confirmadas no banco de dados.

Bônus de leitura:Como usar o MySQL Rollup


Podemos reverter após o commit no MySQL


Não. Infelizmente, você não pode desfazer as alterações que foram confirmadas no banco de dados.


Como reverter o banco de dados MySQL


Observe que, por padrão, o MySQL está configurado para confirmar automaticamente todas as consultas SQL. Portanto, é importante desativar a confirmação automática no MySQL usando a instrução a seguir, se você quiser usar o MySQL Rollback.

Faça login no banco de dados MySQL e execute o seguinte comando para desabilitar o autocommit
SET autocommit = 0

Ou
SET autocommit = OFF

Você usa a seguinte instrução para habilitar o modo de confirmação automática explicitamente:
SET autocommit = 1

Ou
SET autocommit = ON



Bônus de leitura:Como verificar a versão do MySQL



Digamos que você tenha a seguinte tabela sales(product,order_date,sale) . Veremos como emitir o rollback do MySQL após o comando 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 |
+---------+------------+------+



Agora vamos desligar o autocommit como mencionado acima,
mysql> set autocommit=0;



Em seguida, vamos excluir todas as linhas da tabela de vendas.
mysql> delete from sales;
Query OK, 5 rows affected (0.00 sec)

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

Como você pode ver, todas as 5 linhas da tabela de vendas foram excluídas.



Agora, vamos emitir o MySQL Rollback após o comando delete
mysql> rollback;
Query OK, 0 rows affected (0.07 sec)

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

Como você pode ver, as 5 linhas excluídas foram restauradas porque as alterações não foram confirmadas. No entanto, se você tivesse problemas com a instrução COMMIT após a exclusão e antes do comando ROLLBACK, o MySQL não teria restaurado sua tabela.



Bônus de leitura:Como desativar a verificação de chave estrangeira no MySQL


Comando de atualização de reversão do MySQL


Da mesma forma, você pode reverter o comando de atualização. Vamos atualizar a venda coluna acima de vendas tabela.
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 |
+---------+------------+------+

Como você pode ver, dobramos o valor da coluna de venda. Agora vamos reverter o comando de atualização.
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 |
+---------+------------+------+

Como você pode ver, os valores antigos da coluna de venda foram restaurados.

Você também pode incluir MySQL Rollback em procedimentos armazenados e transações MySQL para MySQL Rollback em caso de erro. A chave é desabilitar o autocommit para executar o rollback do MySQL.

O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!