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.
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.
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
STARTTRANSACTION;UPDATE accounts SET balance = balance -100WHERE name ='John Doe';UPDATE accounts SET balance = balance +100WHERE name ='Jane Smith';COMMIT;Tecnologia
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//CREATEPROCEDUREConditionalCommit()BEGINDECLARE order_exists INT;STARTTRANSACTION;DELETEFROM orders WHERE order_id =101;SELECTCOUNT(*)INTO order_exists FROM orders WHERE order_id =101;IF order_exists =0THENCOMMIT;ELSEROLLBACK;ENDIF;END//DELIMITER;Tecnologia
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.
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.
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
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
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:
Neste exemplo, um procedimento verifica se a exclusão da ordem foi bem-sucedida antes de confirmar.
Dicas e práticas recomendadas
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.