Escopo
Inspeção editorial da palavra upsert — portmanteau inglês de update + insert. No ofício de bases de dados: inserir se a identidade ainda não existe; actualizar se já existe. Pedido de campo e ironia do lab: os scripts da casa chamam-se `upsert-palavra-*.js` — esta ficha entra no catálogo pelo gesto que nomeia. Cobre o lema, o mapa INSERT × UPDATE × UPSERT × MERGE × REPLACE, o calco BR upsertar, o elo commitar (gravar o snapshot depois do merge) e o fecho Valeu !!!.
Nota metodológica: auditoria independente. Fontes: Wiktionary · upsert, MERGE (SQL)), uso BR de oficina. Ficha ≠ tutorial SQL, ≠ receita de corrida, ≠ licença para overwrite silencioso. Tom: Inspetor BudGanja — upsert é gesto de identidade, não botão mágico.
1. Objecto inspecionado
| Campo | Valor |
|---|---|
| Forma âncora | upsert (EN; substantivo / verbo) |
| Calco BR | upsertar (como commitar) — «fazer upsert» |
| Classe | Empréstimo de ofício (bases de dados, APIs, catálogos) |
| Étimo (trabalho) | Portmanteau update + insert (jargão EN, séc. XX–XXI) — confiança: alta no blend; média na data exacta do primeiro uso |
| Família | upsert · upsertar · SQL MERGE · ON CONFLICT · ON DUPLICATE KEY |
| Falsos irmãos | upar (games, «subir de nível») · replace (apagar + inserir — outra política) · commitar (snapshot git — depois) |
| Tipo BudGanja | Palavra — identidade × merge inspeccionável |
| Elo rasto | commitar — gravar o que ficou depois do merge |
| Elo molde | pattern — upsert é um pattern de dados, não lei natural |
| Elo ofício | gesto · verdade · caminho · skill · Grok |
| Elo língua | língua portuguesa — empréstimo vivo; PT nativo = inserir ou actualizar |
| Fonte | upsert · MERGE) |
| Data | 2026-08-22 |
Objecto: o vocábulo de não duplicar a identidade. A chave (id, slug, primary key) decide o ramo: novo → insert; já lá → update. Não é «gravar no git». Não é «apagar e pôr outro».
2. Hipóteses e método
H1: upsert é blend de ofício, não herança latina — update + insert colados na boca da base de dados.
H2: o que parece um botão único é uma política de conflito: o que fazer quando a chave já existe.
H3: MERGE (SQL:2003) é o nome-norma; upsert é o nome de oficina (PostgreSQL, MongoDB, APIs).
H4: no lab BudGanja, `upsertPost(posts, post)` é este gesto: se o slug existe, actualiza; senão, insere no topo.
H5: commitar vem depois — o upsert mistura o objecto; o commit grava o rasto.
Passos: blend EN → mapa SQL → calco BR → gesto lab (slug) → limites → Valeu !!!.
3. Ofícios (não misturar)
| Ofício | O que é | O que não é |
|---|---|---|
| INSERT | Criar linha nova | Falha (ou ignora) se a chave já existe |
| UPDATE | Alterar linha existente | Zero linhas se a chave não existe |
| UPSERT | Insert ou update conforme a chave | Magia; force sem inspeccionar campos |
| MERGE | Nome ISO SQL do mesmo pattern | Outra palavra; mesmo ofício de conflito |
| REPLACE | Muitas vezes delete + insert | Pode mudar identidade (rowid); ≠ upsert |
| commitar | Snapshot com mensagem | Não decide insert vs update |
Irmãos de fluxo (não fundir): upsert (identidade no catálogo) → commitar (rasto) → push / deploy — três gestos. Esta ficha é só o primeiro.
4. O que parece × o que é
| Camada | O que parece | O que é (leitura lab) |
|---|---|---|
| Botão único | «Sempre funciona» | Política de chave + resolução de conflito |
| Overwrite | Substituir tudo | Merge inspeccionável — campos, não identidade |
| Inglês no meio do PT | Estrago da língua | Empréstimo de ofício, como skill e commitar |
| upsertar | Erro / anglicismo feio | Calco vivo do mesmo verbo |
| Script `upsert-*` | Nome interno de ficheiro | O lab já pratica o lema: ficha nova ou ficha actualizada, um slug |
| Corrida | Dois escritores, um vencedor | Sem verdade do conflito = buguei |
H-parece: upsert vende idempotência fácil — corre outra vez e está igual.
H-é: só é fácil se a chave estiver certa e o merge não apagar o que importava.
Veredicto contraste: o que parece = um comando; o que é = identidade + política. Corrigir a palavra = nomear a chave (no lab: o slug).
5. Gesto BudGanja
No catálogo da casa, o slug é a chave. `upsertPost`:
- Procurar a ficha pelo slug.
- Se existir: actualizar (mesclar campos; não criar segundo «upsert»).
- Se não existir: inserir (no lab, no topo da lista).
- Só depois: commitar o rasto — mensagem que diz o porquê.
- Se o merge sujar: backspace / buguei — não fingir que upsert = limpar.
Ofício correcto (mapa curto)
- Fixar a identidade (slug, id) antes de escrever.
- Declarar o conflito: actualizar o quê, preservar o quê.
- Upsertar uma ficha — não duas com o mesmo nome.
- Commitar o snapshot; fechar com Valeu !!!.
Veredicto correção: upsert ≠ overwrite silencioso. No lab, upsert só vale com chave visível e merge com verdade.
6. Usos no português do Brasil
| Uso | Exemplo | Bom × mau |
|---|---|---|
| Oficina / SQL | «Faz upsert pela chave» | Bom: nomear o conflito · Mau: esconder o ON CONFLICT |
| Calco | «Vou upsertar a ficha» | Bom: ofício, como commitar · Mau: jargão sem chave |
| API / doc | upsert: true | Bom: política explícita · Mau: default que apaga campos |
| Lab BudGanja | `upsert-palavra-upsert-inspecao.js` | Bom: o script é o lema · Mau: duplicar slug |
| Falso amigo | «upar o personagem» | Outra palavra (games) |
Rede aparentada
| Recurso | Relação |
|---|---|
| commitar | Depois do merge: gravar o rasto; ≠ push/PR |
| pattern | Upsert é molde de dados — copiar cego é risco no molde |
| skill · Grok | Outros empréstimos de ofício |
| gesto · verdade · caminho | Como se upserta |
| buguei · backspace | Quando o merge trava / rever |
| EXIT | Sair do aperto ≠ apagar a identidade |
| língua portuguesa · Guia · Vida · Valeu !!! | Índice e fecho |
Limites
- Não ensina SQL, não autoriza corrida sem inspecção, não substitui backup.
- Não trata upar de jogo nesta ficha.
- upsert / upsertar / MERGE (norma SQL) = o mesmo ofício de conflito; replace e commitar ficam de fora.
- Menção a ON CONFLICT / ON DUPLICATE KEY é nome do pattern, não receita de ataque.
Veredicto
Aprovado na série Palavras — upsert fichado como portmanteau de identidade (update + insert); calco upsertar; ≠ replace ≠ commitar; o lab já pratica o gesto no slug; fecho Valeu !!!.
▶ Palavras · ▶ Commitar · ▶ Pattern · ▶ Skill · ▶ Valeu !!!
Upsert · palavra · Cap. 201