English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Transações no SQLite

Uma transação é um conjunto de trabalho executado no banco de dados. Uma transação é um conjunto ou sequência de trabalho completados em ordem lógica, seja concluído manualmente pelo usuário ou automaticamente por algum programa de banco de dados.

Uma transação é a distribuição de uma ou mais alterações para o banco de dados. Por exemplo, se você quiser criar, atualizar ou excluir registros na tabela, você executará uma transação na tabela. É importante controlar as transações para garantir a integridade dos dados e lidar com erros do banco de dados.

Na verdade, você organizará muitas consultas SQLite em um grupo e executá-las como parte de uma transação.

Atributos da transação

A transação possui os seguintes quatro atributos padrão, geralmente representados pelo acrônimo ACID.

  • Atomicidade (Atomicidade):Garanta que todas as operações dentro da unidade de trabalho sejam concluídas com sucesso, caso contrário, a transação será encerrada quando ocorrer uma falha e as operações anteriores serão revertidas ao estado anterior.

  • Consistência (Consistency):Garantir que o banco de dados mude corretamente o estado após a submissão bem-sucedida da transação.

  • Isolamento (Isolation):Tornar as operações de transação independentes e transparentes.

  • Durabilidade (Durability):Garantir que os resultados ou efeitos das transações submetidas ainda existam em caso de falha do sistema.

Controle de Transação

Aqui estão os seguintes comandos usados para controlar transações:

  • INICIAR TRANSACAO −Iniciar transação.

  • COMMIT−Para salvar as alterações, também pode-se usarFIM DA TRANSACAOcomando.

  • ROLLBACK −Reverter as alterações.

Os comandos de controle de transação são usados apenas com comandos DML INSERT, UPDATE e DELETE. Eles não podem ser usados ao criar ou excluir tabelas, pois essas operações são automaticamente submetidas no banco de dados.

Comando INICIAR TRANSACAO

Pode-se usar INICIAR TRANSACAO ou simplesmente usar o comando INICIAR para iniciar uma transação. Essas transações geralmente duram até encontrar o próximo comando COMMIT ou ROLLBACK. No entanto, se o banco de dados for fechado ou ocorrer um erro, a transação também será revertida. Aqui está a sintaxe simples para iniciar uma transação.

INICIAR;
ou 
INICIAR TRANSACAO;

Comando COMMIT

O comando COMMIT é usado para salvar as alterações das chamadas de transação no banco de dados.

Desde o último comando COMMIT ou ROLLBACK, o comando COMMIT salva todas as transações no banco de dados.

Aqui está a sintaxe do comando COMMIT.

COMMIT;
ou
FIM DA TRANSACAO;

Comando ROLLBACK

O comando ROLLBACK é usado para reverter transações que não foram salvas no banco de dados.

Desde a última execução do comando COMMIT ou ROLLBACK, o comando ROLLBACK pode ser usado apenas para reverter transações.

Aqui está a sintaxe do comando ROLLBACK.

ROLLBACK;

Exemplo Online

com a tabela COMPANY contendo os seguintes registros.

ID          NOME        IDADE         ENDEREÇO     SALÁRIO
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Agora, vamos começar uma transação e a partir de age = 25excluímos o registro da tabela. Em seguida, usamos o comando ROLLBACK para reverter todas as alterações.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> ROLLBACK;

Agora, se você verificar a tabela COMPANY, ela ainda tem os seguintes registros-

ID          NOME        IDADE         ENDEREÇO     SALÁRIO
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Vamos começar outra transação e a partir de AGE = 25excluímos o registro da tabela, e finalmente usamos o comando COMMIT para submeter todas as alterações.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> COMMIT;

Se verificar agora, a tabela COMPANY ainda possui os seguintes registros-

ID          NOME        IDADE         ENDEREÇO     SALÁRIO
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0