Pular para o conteúdo principal
Documentos
FunçõesExpressõesKeywordsDeclaraçõesCláusulas

Declaração COMMIT do MySQL

A instrução `COMMIT` no MySQL é usada para salvar permanentemente todas as alterações feitas durante a transação atual. Ele finaliza a transação, tornando todas as modificações disponíveis para outros usuários e sessões.

Uso

A instrução `COMMIT` é normalmente usada após uma série de operações `INSERT`, `UPDATE` ou `DELETE` para garantir que as alterações sejam salvas no banco de dados. É essencial no gerenciamento de transações para garantir a integridade dos dados.

COMMIT;

Essa sintaxe confirma que todas as alterações na transação atual são salvas e não podem ser revertidas. Observe que `COMMIT` é aplicável somente em mecanismos de armazenamento que suportam transações, como o InnoDB. Não é aplicável em mecanismos de armazenamento não transacionais, como o MyISAM.

Exemplos

1. Compromisso básico de transação

START TRANSACTION;
INSERT INTO accounts (name, balance) VALUES ('John Doe', 1000);
COMMIT;

Neste exemplo, uma nova conta é adicionada e a alteração é salva com o uso de `COMMIT` para finalizar a transação.

2. Confirmação de várias alterações

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE name = 'John Doe';
UPDATE accounts SET balance = balance + 100 WHERE name = 'Jane Smith';
COMMIT;

Este exemplo transfere fundos entre duas contas. Ambas as atualizações são finalizadas em conjunto com um único `COMMIT`, garantindo a atomicidade.

3. Confirmação condicional com tratamento de erros

Para lidar com confirmações condicionais e detecção de erros, use a lógica do aplicativo ou procedimentos armazenados. Não há suporte para instruções `IF` diretas em scripts SQL. Aqui está um exemplo usando um procedimento armazenado:

DELIMITER //
CREATE PROCEDURE ConditionalCommit()
BEGIN
    DECLARE order_exists INT;
    START TRANSACTION;
    DELETE FROM orders WHERE order_id = 101;
    SELECT COUNT(*) INTO order_exists FROM orders WHERE order_id = 101;
    IF order_exists = 0 THEN
        COMMIT;
    ELSE
        ROLLBACK;
    END IF;
END //
DELIMITER ;

Neste exemplo, um procedimento verifica se a exclusão da ordem foi bem-sucedida antes de confirmar.

Dicas e práticas recomendadas

  • Emparelhe com `START TRANSACTION`. Use `COMMIT` com `START TRANSACTION` para garantir que as alterações façam parte de uma transação.
  • Trate os erros com `ROLLBACK`. Reverta as alterações antes de confirmá-las em caso de erros.
  • Garanta a consistência da transação e conclua todas as operações necessárias em uma transação antes de confirmá-la.
  • Minimize a duração da transação para reduzir o bloqueio e melhorar o desempenho.
  • Teste antes de se comprometer a verificar se todas as alterações atendem aos seus requisitos.

Nota adicional

A emissão de um `COMMIT` sem um `START TRANSACTION` anterior não tem efeito, pois não há alterações a serem finalizadas. Certifique-se sempre de que `START TRANSACTION` seja usado para iniciar uma transação.

Aprimoramento de SQL para iniciantes

Adquira as habilidades de SQL para interagir com seus dados e consultá-los.
Comece a aprender de graça