1
resposta

Desfazer DELETE no CLI

Não se deve digitar tudo desde o DELETE, pois podemos apertar um ENTER sem querer e apagar uma tabela inteira. Um truque, que entendi pelo professor, é digitar um SELECT antes e depois substituir pela palavra DELETE. Não vi como se desfaz comandos nem no PGadmin nem por linha de comando. Gostaria de saber se há um comando para desfazer um DELETE, por exemplo, no terminal (CLI).

1 resposta

Oi, Marcos! Tudo bem?

Desde já, peço desculpas pela demora em retornar.

Infelizmente não há uma forma direta de desfazer um DELETE. Uma vez que os dados já foram excluídos, não há um comando que possa simplesmente revertê-los. É por isso que é tão importante tomar cuidado ao executar comandos de exclusão.

No entanto, existe um recurso muito interessante que podemos utilizar para evitar que problemas desse tipo aconteçam: as transações! Por meio delas, conseguimos efetuar várias ações sem que elas sejam aplicadas de fato em nosso banco de dados — o que só ocorre após a nossa ordem de confirmação/rejeição.

A transação é iniciada através da cláusula BEGIN. Depois disso, podemos escrever e executar todos os comandos que desejamos (inclusive utilizar o DELETE). Por fim, usamos as cláusulas ROLLBACK (cujo objetivo é cancelar as ações feitas) ou COMMIT (cujo objetivo é efetivar as ações feitas) para finalizar a transação.

Para realizar uma transação em linha de comando, teremos que realizar as seguintes etapas:

1 - Acessar o psql;

2 - Informar as credenciais do nosso usuário (caso você tenha seguido os passos do instrutor, basta pressionar a tecla ENTER até chegar em "Password for user postgres" e digitar a sua senha);

3 - Selecionar o banco em que você irá trabalhar:

\c nome-do-banco-de-dados;

Observação: o comando \c indica que estamos iniciando uma conexão. Em nome-do-banco-de-dados, substituir pelo nome do banco de dados em que você está trabalhando neste momento!

4 - Iniciar a transação:

BEGIN;

5 - Realizar os comandos que deseja, como um SELECT ou INSERT;

6 - Confirmar as ações feitas com o comando COMMIT ou reverter as ações com ROLLBACK.

A partir disso, temos a possibilidade de deletar informações e reverter tal procedimento caso seja necessário!

Marcos, algo muito importante a ser levado em conta ao trabalhar com a linguagem SQL em linha de comando: o uso de ponto e vírgula é muito importante para que tudo seja executado corretamente. Além disso, dependendo do que desejamos fazer, o terminal pode ser um limitador, afetando a legibilidade de comandos e a manipulação dos mesmos — logo, é interessante utilizarmos as próprias ferramentas ofertadas pelo sistema gerenciador de banco de dados, como o pgAdmin4, quando for possível.

Espero ter ajudado com a explicação, caso surja alguma dúvida, fico à disposição para auxiliar!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.