QUEST #253 · DDLQuiz

O Segredo do SERIAL

O mestre-construtor forjou a tabela de poções com `id SERIAL PRIMARY KEY`. Os aprendizes inseriram duas poções sem informar o id e, como mágica, apareceram os números 1 e 2. De onde eles vieram?

LV.1+60 XP
📖 CONCEITO

SERIAL não é um tipo de verdade, é um atalho: o Postgres cria uma coluna INT, uma SEQUENCE (um contador) chamada tabela_coluna_seq e define o DEFAULT da coluna como nextval('tabela_coluna_seq'). Quando o INSERT não informa o id, a sequência entrega o próximo número. A forma moderna, do padrão SQL, é INT GENERATED ALWAYS AS IDENTITY, que funciona do mesmo jeito com regras mais rígidas.

EXEMPLO DE USO
CREATE TABLE pocoes (
  id SERIAL PRIMARY KEY,
  nome TEXT NOT NULL
);

INSERT INTO pocoes (nome) VALUES ('Cura'), ('Mana')
RETURNING id, nome;
🗄️ SCHEMA
Tabela `pocoes` (id SERIAL PRIMARY KEY, nome TEXT NOT NULL), recém-criada. Visão do sistema `information_schema.columns` (table_name, column_name, data_type, column_default, ...)
🎯 DESAFIO

Ao declarar `id SERIAL PRIMARY KEY`, o que o Postgres faz por baixo dos panos?

psql — banco reino❓ QUIZ