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;

Comments

Comments loading...