Questão de Banco de Dados — PostgreSQL — CESPE / CEBRASPE 2025
- Código
- ce417311
- Banca
- CESPE / CEBRASPE
- Órgão
- STM
- Ano
- 2025
- Cargo
- AJ ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. O comando SELECT * FROM public.servidor; não retornará apenas as linhas de servidor — ele retornará também as linhas das tabelas que herdam de servidor, incluindo a linha inserida em magistrado. Portanto, o resultado apresentado no enunciado está incorreto, pois a linha 3 | Maria não apareceria no resultado do SELECT na tabela pai, a menos que se use ONLY.
O PostgreSQL implementa herança de tabelas, um recurso que permite que uma tabela filha herde as colunas da tabela pai. Quando você executa um SELECT em uma tabela pai, por padrão, o PostgreSQL inclui as linhas de todas as tabelas que herdam dela. Para consultar apenas a tabela pai, é necessário usar a cláusula ONLY antes do nome da tabela: SELECT * FROM ONLY public.servidor;.
No exemplo dado, a tabela magistrado herda de servidor (INHERITS (public.servidor)). O INSERT INTO public.magistrado (nome) VALUES ('Maria'); insere uma linha na tabela magistrado, que também é uma linha da tabela servidor (por herança). Assim, o SELECT * FROM public.servidor; retornará três linhas: 1 | Pedro, 2 | João e 3 | Maria. O resultado mostrado no enunciado, que apresenta apenas as duas primeiras linhas, está errado.
A pegadinha aqui é que muitos candidatos conhecem a herança de tabelas, mas esquecem que o SELECT na tabela pai inclui as filhas por padrão. A banca explora exatamente essa confusão: o candidato pode pensar que o SELECT retorna apenas as linhas da tabela servidor, ignorando a herança.
A banca explora a herança de tabelas do PostgreSQL. O candidato pode pensar que o SELECT * FROM public.servidor; retorna apenas as linhas da tabela servidor, mas o PostgreSQL inclui as linhas das tabelas filhas por padrão. Para consultar apenas a tabela pai, é necessário usar ONLY.
O comando SELECT * FROM public.servidor; retornará três linhas, não duas. A linha 3 | Maria aparecerá no resultado, pois a tabela magistrado herda de servidor e o SELECT na tabela pai inclui as linhas das tabelas filhas. O resultado apresentado no enunciado está incorreto.
Gabarito: Errado.
Link permanente: /questoes/ce417311