Analise a sequência de comandos abaixo: CREATE SEQUENCE pro...

Próximas questões
Com base no mesmo assunto
Q1307007 Banco de Dados

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

Alternativas

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

Não tem Foreign Key .

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo