Rullst AcademyRullst Academy/Lição
Bancos de dados e SQL I · Lição 09 / 12

Transações e decisões

Explicar BEGIN, COMMIT e ROLLBACK e testar tratamento de falhas.

Trilhas de aprendizado18 min

Vamos descobrir juntos

  1. 1

    Uma transação agrupa mudanças. BEGIN inicia, COMMIT confirma e ROLLBACK desfaz a transação aberta. Uma devolução e outro registro podem formar uma unidade de trabalho. Consulte antes e depois para verificar a intenção.

  2. 2

    Uma falha de restrição no SQLite pode desfazer só a instrução que falhou e deixar a transação aberta. Não presuma que todo erro reverte instruções anteriores. Nosso runner captura a falha e faz rollback se necessário; o teste verifica isso.

  3. 3

    O exemplo mostra alteração provisória e estado restaurado. Compare com COMMIT. O banco em memória ainda desaparece ao terminar: confirmar transação e persistir em arquivo são decisões distintas.

  4. 4

    Vários usuários exigem pensar também em concorrência, bloqueios e regras de negócio. Este kit não implementa um serviço concorrente de empréstimos. Explique seus limites antes de adaptar para uso real.

Sua bancada de dados

Nosso modelo: kits.id ← loans.kit_id. Um material pode ter vários empréstimos; nomes podem repetir. Só usamos dados fictícios.

Preveja antes de abrir a referência. Ela mostra o resultado verificado do exemplo original, não executa seu texto. Para executar suas alterações, use o kit no computador.

-- Transações e decisões
BEGIN;
UPDATE loans SET returned='2026-01-03' WHERE id=3;
SELECT id, returned FROM loans WHERE id=3;
ROLLBACK;
SELECT id, returned FROM loans WHERE id=3;
Comparar com o resultado de referência
[
  {
    "columns": [
      "id",
      "returned"
    ],
    "rows": [
      [
        3,
        "2026-01-03"
      ]
    ]
  },
  {
    "columns": [
      "id",
      "returned"
    ],
    "rows": [
      [
        3,
        null
      ]
    ]
  }
]

No terminal da pasta extraída, execute o comando. Use python3 no macOS/Ubuntu ou py se esse for seu launcher no Windows. Cada execução começa em memória; leia README.md para salvar arquivos e ensaiar recuperação.

python lab.py run lesson.sql
Meus arquivos e GitHub

O editor guarda seu rascunho .sql neste navegador. Baixe a edição e substitua lesson.sql no kit; no projeto final, availability.sql. O ZIP continua sendo o modelo original. Publicar no GitHub envia apenas o arquivo confirmado, sem executar SQL ou enviar o banco.

Links oficiais e próximo passo

✦
SUA MISSÃO

Explicar BEGIN, COMMIT e ROLLBACK e testar tratamento de falhas.

Agora é a sua vez

Oficina de descobertas

Leia, preveja e confira

Explicar BEGIN, COMMIT e ROLLBACK e testar tratamento de falhas.
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

Um erro sempre desfaz toda a transação SQLite?

Preciso de uma pista

Uma falha de restrição no SQLite pode desfazer só a instrução que falhou e deixar a transação aberta. Não presuma que todo erro reverte instruções anteriores. Nosso runner captura a falha e faz rollback se necessário; o teste verifica isso.

Carregando sua jornada…

Leve com você

Execute o teste de falha. Explique por que stock volta a 3 quando uma instrução posterior viola a FK.

No seu ritmo

Meus arquivos e GitHub

Toda lição pode virar um registro seu: código, anotações ou um plano de prática. Guardar um arquivo no GitHub é opcional e não altera seu XP.

Manual do aluno

O editor e os downloads abrem quando esta lição estiver liberada para sua conta. Confira o acesso abaixo ou volte ao mapa da trilha.

Conferindo seu acesso à lição…

Rullstpetbot

A IA pode errar. Confira no material da lição.