MariaDB - Transações

As transações são operações de grupo sequenciais. Eles funcionam como uma única unidade e não terminam até que todas as operações dentro do grupo sejam executadas com sucesso. Uma única falha no grupo faz com que toda a transação falhe e não tenha impacto no banco de dados.

As transações estão em conformidade com ACID (atomicidade, consistência, isolamento e durabilidade) -

  • Atomicity - Garante o sucesso de todas as operações abortando em caso de falhas e revertendo as alterações.

  • Consistency - Garante que o banco de dados aplique alterações em uma transação bem-sucedida.

  • Isolation - Permite a operação de transações independentes de transações.

  • Durability - Garante a persistência de uma transação bem-sucedida em caso de falha do sistema.

No início de uma instrução de transação está a instrução START TRANSACTION seguida pelas instruções COMMIT e ROLLBACK -

  • START TRANSACTION inicia a transação.

  • COMMIT salva as alterações nos dados.

  • ROLLBACK termina a transação, destruindo todas as alterações.

Em uma transação bem-sucedida, o COMMIT atua. Em caso de falha, o ROLLBACK atua.

Note- Algumas instruções causam uma confirmação implícita e também causam um erro quando usadas em transações. Exemplos de tais instruções incluem, mas não estão limitados a CREATE, ALTER e DROP.

As transações MariaDB também incluem opções como SAVEPOINT e LOCK TABLES. SAVEPOINT define um ponto de restauração para utilizar com ROLLBACK. LOCK TABLES permite controlar o acesso às tabelas durante as sessões para evitar modificações durante determinados períodos de tempo.

A variável AUTOCOMMIT fornece controle sobre as transações. Uma configuração de 1 força todas as operações a serem consideradas transações bem-sucedidas, e uma configuração de 0 faz com que a persistência das alterações ocorra apenas em uma instrução COMMIT explícita.

Estrutura de uma transação

A estrutura geral de uma instrução de transação consiste em começar com START TRANSACTION. A próxima etapa é inserir um ou mais comandos / operações, inserir instruções que verificam se há erros, inserir instruções ROLLBACK para gerenciar quaisquer erros descobertos e, finalmente, inserir uma instrução COMMIT para aplicar mudanças em operações bem-sucedidas.

Reveja o exemplo fornecido abaixo -

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;