START TRANSACTION

You are viewing an old version of this article. View the current version here.

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...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.