Introdução às transações no SQL
Uma transação no SQL geralmente conhecida como efetuar pagamentos (envio, recebimento, compra etc.), mas quando se trata dos campos técnicos, é a maneira de atualizar a unidade lógica de informações no banco de dados.
Uma transação é a implementação de uma ou mais alterações no banco de dados. Podemos agrupar várias consultas SQL e executar ao mesmo tempo em uma transação. Todas as consultas SQL seriam executadas de uma só vez ou todas seriam revertidas. Teria apenas dois resultados, sucesso ou fracasso.
A transação, uma vez confirmada, não pode ser uma reversão. Ela pode ser revertida apenas se a transação não for confirmada. O MYSQL confirma automaticamente as alterações no banco de dados se todas as consultas forem executadas com êxito. Para confirmar explicitamente as alterações no banco de dados, primeiro é necessário desativar a confirmação automática por meio do comando -
Sintaxe: SET autocommit = 0;
Propriedades da transação
A seguir estão as propriedades importantes das transações, todas as transações devem seguir essas propriedades
1. Atomicidade
Uma transação deve ser atômica; a manipulação de dados média deve ser concluída para uma determinada unidade lógica. Essa propriedade garante que as alterações nos dados ocorram completamente, caso contrário, reverterá a transação.
2. Consistência
Após a conclusão da transação, todos os registros disponíveis serão consistentes durante a transação. Essa propriedade garante que a propriedade do banco de dados alterne o estado após uma confirmação bem-sucedida ou não.
3. Isolamento
O isolamento refere-se a alterações de dados em uma determinada unidade lógica que não devem afetar em outra unidade. Permite que uma transação seja executada independentemente.
4. Durabilidade
As alterações feitas durante as transações devem ser permanentes no sistema. No caso de um erro do sistema, essa propriedade também garante que as alterações nos dados ocorram ou não.
A propriedade acima mencionada da transação também é conhecida como propriedade ACID.
Etapas da transação
1. Comece
Uma transação pode ocorrer em várias execuções do SQL, mas todo o SQL deve ser executado ao mesmo tempo. Se alguma transação falhar, a transação inteira será revertida. A instrução para iniciar a transação é "START TRANSACTION". Inicia o acrônimo para START TRANSACTION.
Sintaxe: INICIAR TRANSAÇÃO;
2. Comprometa
As confirmações refletem permanentemente as alterações no banco de dados. A declaração para iniciar a transação é "COMMIT".
Sintaxe: COMMIT;
3. Reversão
A reversão é usada para reverter as alterações, ou seja, o registro não será alterado, estaria no estado anterior. A instrução para iniciar a transação é "ROLLBACK".
Sintaxe: ROLLBACK;
4. Savepoint
SAVEPOINT também é uma declaração de transação. Esta instrução usada para criar um ponto de armazenamento no sistema para que a operação ROLLBACK possa atingir o estado do ponto de salvamento.
5. Libere o Savepoint
RELEASE SAVEPOINT é uma instrução para liberar o ponto de salvamento e a memória consumidos pelo sistema na criação de um ponto de salvamento.
Sintaxe: RELEASE SAVEPOINT SP
Notas - SP é o nome do ponto de salvamento quando esse ponto de salvamento foi criado antes do início da transação.
6. Definir transação
O comando SET TRANSACTION é usado para especificar o atributo de transação, como a transação especificada, é uma sessão somente leitura ou leitura / gravação.
Sintaxe : SET TRANSACTION (READ-WRITE | READ ONLY);
A transação é usada para executar as alterações complexas no banco de dados. É usado principalmente em informações relacionadas a operações bancárias, transformando-as em um banco de dados relacional.
A transação é suportada pelo mecanismo MYSQL InnoDB. Por padrão, a confirmação automática permanece ativada e é por isso que sempre que um SQL é executado após a confirmação da execução ocorre automaticamente.
Transações usando SQL
Exemplo 1
Transação bancária: uma conta debitada no valor de 50000 da pessoa A e uma conta poupança e submeteu esse valor à conta de empréstimo de A.
Iniciar transação: essa transação inicial converterá todas as consultas SQL em uma única unidade de transação.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Esta consulta SQL deduz o valor do saldo da conta existente.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Esta consulta SQL adiciona o valor à conta de empréstimo do usuário.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Esta consulta SQL insere um novo registro na tabela de detalhes da transação, esta tabela contém os detalhes de todas as transações dos usuários. Se toda a consulta executada com êxito, o comando COMMIT precisará ser executado, pois as alterações precisam ser permanentemente armazenadas no banco de dados.
Confirmar: Esta declaração de confirmação salva as alterações invocadas por uma transação no banco de dados. Se alguma transação falhar durante a execução, o comando ROLLBACK deve ser executado para reverter a transação completa
Reversão: a reversão ocorre quando qualquer consulta falha durante a execução.
Exemplo 2
Transação de estoque: Na tabela de itens fornecida, 6 itens estão disponíveis.
Executando a seguinte instrução START TRANSACTION para iniciar a transação.
Agora execute o comando SET AUTOCOMMIT = 0 ; desativar a confirmação automática
Agora executando a seguinte instrução para remover o registro da tabela de itens
Agora, o registro disponível na tabela é 4, isto é, registros temporariamente removidos dos itens da tabela
Agora, executando o comando ROLLBACK para reverter as alterações, o registro excluído estaria disponível nos itens da tabela, como anteriormente, antes de iniciar a transação
Novamente, se aplicar a mesma operação de exclusão, a operação COMMIT após a alteração será salva permanentemente no banco de dados
Agora podemos ver que, após o comando ROLLBACK ainda, o registro estava em um novo estado. Isso significa que, uma vez que a operação COMMIT executou, as alterações não podem ser revertidas porque elas permanentemente fazem alterações no banco de dados;
Benefícios do uso da transação no SQL
a) O uso da transação melhora o desempenho , ao inserir 1000 registros usando transações nesse caso, o tempo gasto seria menor que a inserção normal. Como na transação normal, toda vez que o COMMIT ocorria após cada execução da consulta e aumentava o tempo de execução todas as vezes, enquanto na transação não era necessário executar a instrução COMMIT após cada consulta SQL. O COMMIT no final refletiria todas as alterações no banco de dados permanentemente de uma só vez. Além disso, ao usar a transação, a reversão das alterações seria muito mais fácil do que a transação normal. O ROLLBACK reverterá todas as alterações de uma só vez e manterá o sistema no estado anterior.
b) A transação garante a integridade dos dados no banco de dados relacional. A maior parte do banco de dados usa várias tabelas para manter os dados e, ao fazer atualizações, pode haver alterações nas várias tabelas naquele momento, se alguma das consultas SQL falhar, e a transação manterá os dados inalterados.
Conclusão
Usar transações é uma prática recomendada na atualização de informações para uma unidade lógica em um banco de dados relacional. Para implementação de transação, o mecanismo de banco de dados deve suportar a transação como o mecanismo InnoDB. A transação, como uma unidade de instruções SQL, pode ser revertida de uma só vez usando uma única instrução ROLLBACK. A transação garante a integridade dos dados e melhora o desempenho do banco de dados.
Artigos recomendados
Este é um guia para transações no SQL. Aqui discutimos a introdução, propriedades, etapas, exemplos de transações no SQL, além dos benefícios do uso de transações no SQL.
- O que é SQL
- Ferramentas de Gerenciamento SQL
- Exibições SQL
- Tipos de junções no SQL Server
- Os 6 principais tipos de junções no MySQL com exemplos