START TRANSACTION
Sintaxe:
START TRANSACTION [WITH CONSISTENT SNAPSHOT] | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET autocommit = {0 | 1}
Descrição:
A instrução START TRANSACTION
ou a instrução BEGIN
, começam uma nova transação. COMMIT
finaliza a transação atual fazendo permanentes as alterações. ROLLBACK
faz uma reversão da transação atual, cancelando as alterações. A instrução de autocommit SET
desativa ou habilita o modo padrão de autocommit para a sessão atual.
A palavra-chave opcional WORK
é suportada por COMMIT
e ROLLBACK
, assim como pelas cláusulas CHAIN
e RELEASE
. CHAIN
e RELEASE
podem ser usadas para controle adicional sobre a conclusão da transação. O valor da variável de sistema completion_type determina o comportamento padrão da conclusão. Veja server system variables.
A cláusula AND CHAIN
faz com que uma nova transação comece assim que a transação atual terminar, e a nova transação tem o mesmo nível de isolamento da transação que acabou de terminar. A cláusula RELEASE
faz com que o servidor desligue a sessão cliente atual após ter terminado a transação atual. Incluir a palavra-chave NO
suprime o término de CHAIN
ou RELEASE
, o que pode ser útil se a variável de sistema completion_type for definida para obter encadeamento ou liberar o encerramento por padrão.
Por padrão, MySQL se executa com o modo autocommit habilitado. Isto significa que assim que você executar uma instrução que atualize (altere) uma tabela, MariaDB armazena a atualização em disco para fazê-la permanente. Para desativar o modo autocommit, use a seguinte instrução:
SET autocommit=0;
Após ter desativado o modo autocommit, definindo a variável autocommit para zero, as alterações nas tabelas transaction-safe (tais como aquelas para InnoDB ou NDBCLUSTER
) não são feitas permanentes imediatamente. Você deve usar COMMIT
para armazenar suas alterações em disco, ou ROLLBACK para ignorá-las.
Para desativar o modo autocommit para uma única série de instruções, use a instrução START TRANSACTION
:
Exemplos:
START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;