No contexto do Oracle, considere o comando a seguir e analis...
create global temporary table temp ( a int not null primary key, b varchar(20) not null );
I. Dados inseridos numa sessão (em inglês, session) são removidos no fim da sessão.
II. Dados inseridos numa sessão podem ser acessados somente pela própria sessão.
III. Ao término de uma transação por meio de um comando commit, os dados são automaticamente removidos da tabela.
Está correto somente o que se afirma em:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - I e II.
O tema da questão envolve o entendimento sobre o comportamento das tabelas temporárias globais no banco de dados Oracle. Estas tabelas são criadas para armazenar dados temporários que são específicos para a sessão do usuário e podem ser utilizadas para operações temporárias dentro de uma aplicação ou durante processos de batch.
A afirmativa I está correta, pois os dados inseridos em uma tabela temporária global são exclusivos para a sessão atual e são removidos automaticamente ao fim desta sessão. Isso significa que, uma vez que a sessão do usuário termina, quaisquer dados armazenados na tabela temporária global são descartados.
A afirmativa II também está correta, uma vez que os dados inseridos na tabela temporária global são acessíveis apenas pela sessão que os inseriu. Outras sessões não terão acesso a esses dados, o que garante o isolamento e a privacidade das transações de cada sessão.
A afirmativa III está incorreta, pois o comportamento de remoção dos dados de uma tabela temporária global é controlado pelas opções ON COMMIT DELETE ROWS ou ON COMMIT PRESERVE ROWS no momento da criação da tabela. O enunciado não mencionou a cláusula ON COMMIT, portanto, por padrão, o comando commit não remove os dados de uma tabela temporária global; eles permanecem acessíveis até o fim da sessão.
Assim, as únicas afirmativas corretas são I e II, o que torna a alternativa C a resposta correta para essa questão.
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
Letra C)
I. Dados inseridos numa sessão (em inglês, session) são removidos no fim da sessão.
II. Dados inseridos numa sessão podem ser acessados somente pela própria sessão.
A afirmativa I está correta. Dados inseridos em uma sessão de tabela temporária global são removidos no fim da sessão. Isso ocorre porque as tabelas temporárias globais são criadas no espaço de tabelas temporário do usuário, que é um espaço de tabelas exclusivo para cada sessão. Quando a sessão é encerrada, o espaço de tabelas temporário é liberado e, com ele, todos os dados das tabelas temporárias globais criadas na sessão.
A afirmativa II também está correta. Dados inseridos em uma sessão de tabela temporária global podem ser acessados somente pela própria sessão. Isso ocorre porque as tabelas temporárias globais são privadas para cada sessão. Outras sessões não podem acessar os dados dessas tabelas.
A afirmativa III está incorreta. Dados inseridos em uma sessão de tabela temporária global não são removidos automaticamente ao término de uma transação por meio de um comando commit. Os dados são removidos apenas no fim da sessão.
Portanto, a resposta correta é I e II.
Fonte: Bard.
A alternativa III está correta porque descreve o comportamento padrão das tabelas temporárias globais no Oracle quando a cláusula `ON COMMIT` não é explicitamente definida. Nesse contexto, duas opções principais podem ser especificadas para controlar o ciclo de vida dos dados em uma tabela temporária global: `ON COMMIT DELETE ROWS` e `ON COMMIT PRESERVE ROWS`.
1. ON COMMIT DELETE ROWS:
- Quando esta opção é utilizada (ou assumida por padrão na ausência de uma cláusula `ON COMMIT` explícita), os dados inseridos na tabela temporária são automaticamente removidos ao final de cada transação. Isso significa que, após um comando `COMMIT` ou `ROLLBACK`, a tabela temporária será esvaziada. Esse comportamento é ideal para cenários onde os dados temporários são necessários apenas durante a execução de uma transação específica e podem ser descartados imediatamente após a conclusão dessa transação.
2. ON COMMIT PRESERVE ROWS:
- Quando esta opção é especificada, os dados inseridos na tabela temporária são preservados até o fim da sessão do usuário, independentemente das transações individuais. Mesmo após um `COMMIT` ou `ROLLBACK`, os dados permanecem acessíveis para a mesma sessão até que ela seja encerrada. Essa abordagem é útil quando os dados temporários precisam ser mantidos ao longo de várias transações dentro da mesma sessão.
No comando apresentado, não há uma cláusula `ON COMMIT` definida explicitamente. Portanto, o Oracle adota o comportamento padrão, que é `ON COMMIT DELETE ROWS`. Isso significa que os dados inseridos na tabela temporária global são visíveis apenas durante a transação atual e são automaticamente removidos assim que a transação é finalizada com um `COMMIT` ou `ROLLBACK`. Portanto, a afirmativa III é correta, pois reflete precisamente esse comportamento padrão, destacando que os dados são automaticamente removidos da tabela ao término de uma transação.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo