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

Mudar sem perder o alvo

Prever o alcance de UPDATE e DELETE, testar e desfazer uma tentativa.

Trilhas de aprendizado16 min

Vamos descobrir juntos

  1. 1

    Antes de alterar, use SELECT com a mesma condição e confira ids e quantidade. label = Orbit encontra duas linhas; id = 1 identifica uma. Escolha o alvo pelo problema, não pela primeira linha da tela.

  2. 2

    UPDATE modifica colunas; DELETE remove linhas. Sem WHERE podem atingir toda a tabela. DELETE não remove a definição da tabela: DROP TABLE é outra operação. Pratique apenas no banco fictício.

  3. 3

    O exemplo abre BEGIN, altera id 1, consulta e usa ROLLBACK. A última consulta mostra o valor anterior. Confirmar com COMMIT exige conferir o resultado; operações reais também precisam de recuperação adequada.

  4. 4

    Para praticar DELETE, insira um registro novo sem empréstimos e remova só esse id. A FK impede apagar materiais com linhas dependentes, inclusive empréstimos devolvidos. Teste o erro e explique por quê.

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.

-- Mudar sem perder o alvo
BEGIN;
SELECT id, stock FROM kits WHERE id=1;
UPDATE kits SET stock=4 WHERE id=1;
SELECT id, stock FROM kits WHERE id=1;
ROLLBACK;
SELECT id, stock FROM kits WHERE id=1;
Comparar com o resultado de referência
[
  {
    "columns": [
      "id",
      "stock"
    ],
    "rows": [
      [
        1,
        3
      ]
    ]
  },
  {
    "columns": [
      "id",
      "stock"
    ],
    "rows": [
      [
        1,
        4
      ]
    ]
  },
  {
    "columns": [
      "id",
      "stock"
    ],
    "rows": [
      [
        1,
        3
      ]
    ]
  }
]

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

Prever o alcance de UPDATE e DELETE, testar e desfazer uma tentativa.

Agora é a sua vez

Oficina de descobertas

Leia, preveja e confira

Prever o alcance de UPDATE e DELETE, testar e desfazer uma tentativa.
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

Como conferir o alvo antes de atualizar?

Preciso de uma pista

UPDATE modifica colunas; DELETE remove linhas. Sem WHERE podem atingir toda a tabela. DELETE não remove a definição da tabela: DROP TABLE é outra operação. Pratique apenas no banco fictício.

Carregando sua jornada…

Leve com você

Altere id 4 numa transação, consulte antes/depois e reverta. Explique por que usar label pode atingir outro conjunto.

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.