Sintaxe de START TRANSACTION, COMMIT e ROLLBACK


Por padrão, MariaDB é executado em modo autocommit. Isto significa que assim que você executa uma instrução que atualiza (modifica) uma tabela, o MariaDB armaena a atualização no disco.

Se você estiver usando tabelas com segurança a transação (como InnoDB \ ou BDB), você pode colocar o MariaDB em modo não autocommit com o seguinte comando:

SET AUTOCOMMIT=0

Depois de disabilitar o modo autocommit configurando a variável AUTOCOMMIT com zero, você deve utilizar COMMIT para armazenar suas alterações em disco ou ROLLBACK se você deseja ignorar as alterações que você fez desde o início da sua transação.

Se você quiser disabilitar o modo autocommit para uma única série de instruções, você pode utiliar a instrução START TRANSACTION:

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;

BEGIN e BEGIN WORK podem ser usados em vez de START TRANSACTION para iniciar uma transação. START TRANSACTION foi adicionado no MariaDB 4.0.11; ele é uma sintaxe do SQL-99 e é o modo recomendado de iniciar umaa transação an ad-hoc. BEGIN e BEGIN WORK estão disponíveis a partir do MariaDB 3.23.17 e 3.23.19, respectivamente.

Note que se você estiver usando tabelas sem segurança a transação, quaisquer alterações serão armazenadas de uma vez, se considerar o status do modo autocommit.

Se você executar uma instrução ROLLBACK depois de atualizar uma tabela não-transacional, você obterá um erro (ER_WARNING_NOT_COMPLETE_ROLLBACK), como um aviso. Todas as tabelas seguras a transação serão restauradas mas qualquer tabela se segurança a transação não sofrerão alterações.

Se você estiver usando START TRANSACTION ou SET AUTOCOMMIT=0, você deve usar o log binário do MariaDB para backup no lugar do antigo log de atualização. Transações são armazenadas no log binário em um bloco, sobre COMMIT, para assegurar que transações nas quais foram feitas rolled back não foram armazenadas. Leia "O Log Binário".

Você pode alterar o nível isolação para transações com SET TRANSACTION ISOLATION LEVEL. Leia "Sintaxe SET TRANSACTION".

Retornar