Procedimentos armazenados transacionais no MySQL
Executar múltiplas instruções SQL de maneira transacional dentro de um procedimento armazenado garante que todas as instruções sejam executadas com êxito ou nenhuma executar em tudo. Esse comportamento é fundamental para manter a consistência e integridade dos dados. Veja como você pode obter transações em seu procedimento armazenado MySQL:
Correção de erro de sintaxe
No snippet de código fornecido, há dois erros de sintaxe que estão impedindo o procedimento armazenado de se tornar transacional. A sintaxe correta é a seguinte:
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
END;
Este código declara um manipulador de saída que reverterá automaticamente quaisquer alterações se ocorrer uma exceção ou aviso SQL durante a execução do procedimento armazenado. As vírgulas entre as condições do manipulador de saída e o ponto e vírgula no final da instrução DECLARE são cruciais para o funcionamento adequado do procedimento armazenado.
Exemplo
Uma vez os erros de sintaxe foram corrigidos, o procedimento armazenado pode se tornar transacional colocando as instruções SQL dentro de um bloco START TRANSACTION...COMMIT. Aqui está um exemplo de procedimento armazenado transacional:
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
END;
START TRANSACTION;
-- Your SQL statements here
COMMIT;
END
Uso
Para usar o procedimento armazenado transacional, basta chamá-lo a partir do código do seu aplicativo como um procedimento armazenado regular. Se todas as instruções SQL no procedimento armazenado forem executadas com êxito, a instrução COMMIT tornará essas alterações permanentes no banco de dados. Se ocorrer alguma exceção ou aviso SQL, a instrução ROLLBACK desfará automaticamente todas as alterações.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3