Propriedades de transação
Transações, frequentemente conhecidas pelo termo ÁCIDO, tem quatro propriedades gerais principais.
- Atomicidade: Isso garante que todas as tarefas dentro da unidade de trabalho sejam concluídas com sucesso; caso contrário, apenas no ponto de falha, o processo é encerrado e os processos anteriores são restaurados ao seu estado anterior.
- Consistência: Isso significa que após um processo suficientemente comprometido, o banco de dados atualiza o estado de forma adequada.
- Isolamento: Ajuda as transações a trabalharem umas com as outras de forma individual e transparente.
- Durabilidade: Isso garante que, em caso de falha do sistema, o resultado ou consequência de uma transação confirmada retém.
Funcionamento das transações do MySQL:
No MySQL, os dois termos, Commit e Rollback são usados principalmente para transações MySQL. As transações começam apenas com a declaração BEGIN WORK e terminam por uma declaração COMMIT ou uma declaração ROLLBACK. As instruções SQL abrangem a maior parte da transação entre as instruções de início e parada. Essa série de eventos independe da linguagem de programação específica utilizada. Você fará um caminho adequado em qualquer linguagem que estiver usando para construir o aplicativo. As instruções SQL abaixo podem ser implementadas usando o recurso mysql query ().
- COMEÇAR: Inicie seu processo ou transação fornecendo a instrução BEGIN WORK SQL.
- Adicionar SQL COMMAND: uma ou mais instruções SQL, como SELECT, INSERT, UPDATE e DELETE, respectivamente. Confirme mesmo que não haja engano e tudo esteja de acordo com suas expectativas.
- COMPROMETER-SE: A instrução COMMIT deve ser imposta após uma transação bem-sucedida ser feita, de modo que as modificações em todas as tabelas associadas possam ter efeito completo.
- ROLLBACK: Se ocorrer um mau funcionamento, é realmente apropriado enviar uma instrução ROLLBACK para reverter cada tabela especificada na transação para sua condição anterior.
- AUTOCOMMIT: Por padrão, o MySQL aplica as modificações permanentemente a um banco de dados. Se AUTOCOMMIT for definido como 1 (padrão), cada consulta SQL (dentro de uma transação ou não) é considerada uma transação concluída e confirmada até que seja concluída por padrão. Para evitar a confirmação automática, defina AUTOCOMMIT como 0.
Exemplo 01: Modo de confirmação automática ativado:
O MySQL opera com a fase Autocommit permitida por padrão. Ele garante que o MySQL salve as alterações no disco para criá-lo perpetuamente, desde que executemos uma consulta que ajusta (altera) uma tabela. Não é necessário voltar atrás. Vamos tentar com AUTOCOMMIT no modo. Abra o shell da linha de comando do MySQL e digite sua senha para começar.
Tome um exemplo de uma tabela 'livro' que foi criada em um banco de dados 'dados'. No momento, não realizamos nenhuma consulta sobre ele ainda.
>> SELECIONE * DOS dados.livro;
Passo 2: Este processo é para atualizar a tabela 'livro'. Vamos atualizar o valor da coluna 'Autor' onde o 'Nome' de um livro é 'Casa'. Você pode ver que as mudanças foram feitas com sucesso.
>> ATUALIZAR dados.livro SET Autor = 'Cristian Steward' ONDE Nome = 'Casa';
Ao dar uma olhada na tabela atualizada, temos um valor modificado do autor onde 'nome' é 'Casa'.
>> SELECIONE * DOS dados.livro;
Vamos usar o comando ROLLBACK para reverter as alterações simplesmente adicionando a consulta abaixo. Você pode ver que a consulta ROLLBACK não funciona aqui, pois mostra que '0 linhas afetadas'.
>> ROLLBACK;
Você pode até ver a tabela também. A tabela não teve alterações após a execução da instrução ROLLBACK até agora. Isso significa que o ROLLBACK não funciona quando temos AUTOCOMMIT ativado por padrão.
>> SELECIONE * DOS dados.livro;
Exemplo 02: Modo de confirmação automática desativado:
Para reverter as alterações feitas, vamos tentar com o modo AUTOCOMMIT desligado. Usando o mesmo exemplo de tabela 'livro', faremos algumas alterações nela. Estaremos usando a declaração START TRANSACTION para desativar sua fase de auto-commit ou simplesmente digitar o comando abaixo para desligar AUTOCOMMIT.
>> SET AUTOCOMMIT = 0;Digamos que temos a mesma tabela 'livro' em nosso banco de dados, e temos que fazer alterações nela. Em seguida, reverta essas alterações para as antigas novamente.
>> SELECIONE * DOS dados.livro;
Se você não desligou o modo AUTOCOMMIT, então comece com uma consulta START TRANSACTION no shell da linha de comando como abaixo.
>> INICIAR A TRANSAÇÃO;
Estaremos atualizando a mesma tabela usando o comando UPDATE, definindo o 'Autor' como 'Aliana' onde o 'Nome' de um livro é 'Sonho'. Faça isso usando o comando abaixo. Você verá que as mudanças serão feitas com sucesso e eficácia.
>> ATUALIZAR dados.livro SET Autho = 'Aliana' ONDE Nome = 'Sonho';
Vamos verificar se a consulta acima funcionou perfeitamente e fez alterações na tabela ou não. Você pode verificar a tabela atualizada usando o comando SELECT abaixo como sempre.
>> SELECIONE * DOS dados.livro;Você pode ver que a consulta funcionou muito bem, conforme mostrado abaixo.
Agora, é a vez do comando ROLLBACK executar sua função. Tente o comando ROLLBACK em sua linha de comando para reverter a atualização recente para a tabela.
>> ROLLBACK;
Vamos verificar se a consulta ROLLBACK foi trabalhada como deveria ou não. Para isso, você deve verificar a tabela 'livro' novamente usando o comando 'SELECT' como sempre.
>> SELECIONE * DOS dados.livro;Você pode ver na saída abaixo que ROLLBACK finalmente funcionou. Ele reverteu as alterações feitas pela consulta UPDATE nesta tabela.
Conclusão:
Isso é tudo para transações MySQL. Espero que este guia ajude você a realizar transações MySQL convenientemente.