Analise a sequência de comandos abaixo: CREATE SEQUENCE pro...
Analise a sequência de comandos abaixo:
CREATE SEQUENCE processo_id_processo_seq INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1;
ALTER TABLE processo ADD COLUMN id bigint NOT NULL DEFAULT nextval('processo_id_seq'::regclass);
ALTER TABLE processo ADD CONSTRAINT pk_id_processo PRIMARY KEY (id);
Ao ser executada, essa sequência de comandos apresentará como resultado
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é: C - uma mensagem de erro.
Vamos entender por que essa é a resposta correta. A questão aborda o tema de manipulação de sequências e tabelas em um banco de dados SQL, mais especificamente a criação de uma sequência para gerar identificadores únicos (IDs) e a adição de uma coluna a uma tabela que utiliza essa sequência. Para solucionar a questão, é necessário ter conhecimento sobre a criação e uso de sequências no SQL, bem como a sintaxe correta para adicionar uma coluna a uma tabela e definir uma chave primária.
O primeiro comando CREATE SEQUENCE processo_id_processo_seq INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1;
cria uma sequência chamada processo_id_processo_seq que começa em 1 e incrementa de 1 em 1, com o valor máximo bastante grande, que é o padrão para sequências de tipo BIGINT
em PostgreSQL, por exemplo.
O segundo comando tenta adicionar uma coluna id
do tipo bigint
à tabela processo
com um valor padrão definido pela próxima valor da sequência. No entanto, o nome da sequência referenciado está incorreto. O comando faz referência a processo_id_seq quando deveria referenciar a sequência recém-criada processo_id_processo_seq.
O terceiro comando está correto em sua sintaxe, adicionando uma restrição de chave primária à coluna id
da tabela processo
.
Entretanto, o erro está no segundo comando. Já que o nome da sequência está incorreto, o banco de dados não conseguirá encontrar a sequência indicada, e portanto, não conseguirá definir o valor padrão para a coluna id
. Isso resultará em uma mensagem de erro, que é o que a questão afirma ser o resultado da execução da sequência de comandos.
Essa questão destaca a importância de se atentar aos detalhes na sintaxe e nomes de objetos no banco de dados, como tabelas e sequências, e serve como um bom lembrete de que pequenos erros podem levar a erros de execução que impedem o progresso do que está sendo desenvolvido.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Há um erro ao adicionar a chave estrangeira (faltou a referência à sequência)
Padrão para adicionar chaves estrangeiras:
ALTER TABLE nome-da-tabela ADD CONSTRAINT nome-da-constraint
FOREIGN KEY(nome-da-coluna-local) REFERENCES nome-da-tabela-da-fk(coluna-fk)
ALTER TABLE processo ADD COLUMN id bigint NOT NULL DEFAULT nextval('processo_id_seq'::regclass);
Deveria ser: "processo_id_processo_seq", que foi definido na primeira linha.
.
Gabarito: A e C
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo