Considere que os comandos a seguir tenham sido executados n...

Nesse caso, o comando SELECT * FROM public.servidor; apresentará, ao ser executado, o resultado a seguir.

Comentários
Veja os comentários dos nossos alunos
O erro está na ausência do campo Matrícula, que também será impresso (todos preechidos com NULL, já que não foi atribuído valor de matrícula a nenhum dos nomes) após o comando SELECT * FROM public.servidor;
Eu executei o sql no postgres e a ordem dos Ids veio 1,2,1 e não 1,2,3. Acredito que aí está o erro. A tabela "magistrado" tem sua própria sequência de Ids independente da sequência da tabela "servidor"
Segundo o deepseek:
Veja a definição:
CREATE TABLE public.servidor (
idServidor INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
nome VARCHAR(30)
);
CREATE TABLE public.magistrado (
idServidor INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
matricula int
) INHERITS (public.servidor);
Aqui, a tabela filha também declara .
Isso significa que a coluna em é uma identidade separada da de , não compartilhando a sequência.
No PostgreSQL, ao usar herança, as sequências de identity não são compartilhadas automaticamente entre pai e filho, a menos que seja configurado.
Assim, quando inserimos:
INSERT INTO public.servidor (nome) VALUES ('Pedro'), ('João');
-- idServidor: 1, 2 (usando a sequência de servidor)
INSERT INTO public.magistrado (nome) VALUES ('Maria');
-- idServidor em magistrado começa sua própria sequência, geralmente em 1.
Isso faria com que tivesse na tabela , não .
Portanto, o resultado do seria:
idServidor | nome
---+
1 | Pedro
2 | João
1 | Maria
Exatamente o que o colega Luiz Fernando comentou!
GABARITO: ERRADO (correta a decisão da banca)
DESCRIÇÃO (Explicação técnica):
Apesar de ser verdade que, no PostgreSQL, um
inclui registros das tabelas filhas (herança), o resultado apresentado no enunciado está incorreto por causa de um detalhe técnico essencial: o uso de IDENTITY / SERIAL em tabelas com herança.
No código apresentado:
- define
- também define seu próprio como IDENTITY, apesar de herdar de .
⚠️ Consequência importante (pegadinha clássica):
Cada tabela (servidor e magistrado) possui sua própria sequência de geração automática de IDs.
Ou seja:
- os IDs não são compartilhados entre a tabela pai e a tabela filha;
- o PostgreSQL não garante unicidade global do entre tabelas em herança.
- :
- Pedro →
- João →
- :
- Maria → (nova sequência da tabela filha)
Seria algo como:
❌ Não:
Portanto, o erro do item não está na herança, mas na suposição equivocada de que o IDENTITY é global e sequencial entre pai e filho, o que não é verdade no PostgreSQL.
Esse é um ponto técnico refinado, perfeitamente válido para justificar o gabarito ERRADO, conforme padrão de cobrança de concursos até 2025.
PONTO-CHAVE (Pegadinha da banca):
Confundir herança de dados com compartilhamento de sequência/IDENTITY — cada tabela herdeira tem sua própria sequência.
LEMBRE-SE (Frase de memorização):
Em herança no PostgreSQL, o SELECT sobe dados, mas o IDENTITY não é compartilhado.
Acrescentando os colegas:
Ao realizar:
SELECT * FROM public.servidor;
o PostgreSQL retorna também os registros das tabelas filhas (magistrado), por padrão.
Para consultar apenas a tabela pai:
SELECT * FROM ONLY public.servidor;
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo