Analise as seguintes afirmativas sobre SEQUENCES no Oracle: ...

Próximas questões
Com base no mesmo assunto
Q567879 Banco de Dados
Analise as seguintes afirmativas sobre SEQUENCES no Oracle:

1. Os valores gerados por uma sequence podem ser cíclicos, isto é, retornam ao valor inicial ao atingirem certo limite.

2. Se for gerado um valor para uma transação que é posteriormente abortada (roll back) o mesmo valor pode ser gerado para outra transação.

3. Um mesmo usuário recebe sempre valores contínuos na ordem estabelecida para a sequence, mesmo quando há outros usuários gerando valores com a mesma sequence.

4. A função utilizada para gerar valores de uma sequence é denominada IDENTITY.

Somente está correto o que se afirma em: 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a A - 1. Vamos explorar o motivo pelo qual essa afirmação é verdadeira e discorrer brevemente sobre as outras.

Afirmação 1: É verdadeira porque o Oracle permite a criação de sequences que são cíclicas. Isso significa que, após atingirem um valor máximo ou mínimo, elas podem ser configuradas para reiniciar do valor inicial (START WITH) definido, garantindo a geração contínua de valores únicos sem intervenção manual.

Para as demais afirmações, vejamos o que está incorreto:

  • Afirmação 2: Um valor gerado por uma sequence e não utilizado devido a um rollback não será reutilizado. As sequences são desenhadas para evitar duplicidade, portanto, elas não geram o mesmo número novamente mesmo após um rollback. Isso evita possíveis conflitos de chave primária ou única em tabelas.
  • Afirmação 3: Não é garantido que um usuário sempre receberá valores contínuos de uma sequence. Devido ao mecanismo de cache e ao uso simultâneo de várias sessões ou transações, podem ocorrer lacunas entre os valores gerados por uma sequence. Isso é particularmente comum em ambientes com alto grau de concorrência.
  • Afirmação 4: A função para gerar valores de uma sequence no Oracle é chamada NEXTVAL, não IDENTITY. A palavra-chave IDENTITY é comumente associada a colunas que autoincrementam em Sistemas de Gerenciamento de Banco de Dados (SGBDs) como SQL Server e não é aplicável em Oracle da mesma maneira.

Portanto, somente a primeira afirmação está correta, o que reafirma nossa escolha pela alternativa A - 1.

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

1 - Se criar uma sequência com "CYCLE", o valor é reiniciado

2 - A sequência não será decrementada caso a transação passe por rollback

3 - A sequência é global e não do usuário, então esse usuário pode não receber números contínuos

4 - Para gerar um novo valor da sequência, usa-se: nome_seq.nextval

.

OBS: No Oracle 12c, pode-se criar um IDENTITY destas três formas:

  • GENERATED BY DEFAULT AS IDENTITY
  • GENERATED ALWAYS AS IDENTITY
  • GENERATED BY DEFAULT ON NULL AS IDENTITY

Clique para visualizar este comentário

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