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;