-
DELETE - TRUNCATE
Command Type: DML - DDL
Where Condition: support - does not support
Transaction Log: for each delete row - one log indicating deallocation of page
Performance(Speed of execution): slow - much faster then Delete
-
No SQL Server, o camando TRUNCATE permite ROLLBACK!!!
-
O Fabiano está certo: o comando truncate permite rollback, sim.
Essa história de que truncate não permite rollback é um velho e conhecido MITO.
A alternativa "menos errada" é a "D", mas ainda assim não está certa.
Essa questão deveria ter sido anulada, mas acho que ninguém entrou com recurso, então... ficou por isso mesmo.
-
Prezados,
O comando DELETE e o comando TRUNCATE têm finalidades semelhantes, entretanto o TRUNCATE normalmente é mais rápido, porém não permite operação de ROLLBACK.
Fonte : https://docs.oracle.com/cd/B28359_01/server.111/b2...
Portanto a alternativa correta é a letra B.
-
Penso que ele quiz priorizar a questão da rapidez de como é feito o TRUNCATE, mas realmente a questão do ROLLBACK caberia recurso!
-
a) as três equivalem-se quando todos os registros são removidos, pois tomam o mesmo tempo de execução e seus efeitos colaterais são os mesmos; ERRADA - delete consome mais tempo do que o truncate
b) a opção II é geralmente mais rápida, mas tem a desvantagem de não permitir rollback; ERRADA, o truncate é mais rápido que o delete, mas permitir ou não rollback depende da implementação do SGBD
c) a opção III é sensivelmente mais rápida, pois não é necessário gravar novas entradas nos arquivos de log; ERRADA: Novamente: existir ou não Rollback depende do SGBD
d) as opções II e III são plenamente equivalentes, pois a implementação do comando TRUNCATE faz exatamente o que seria feito na opção III; ERRADA: O Truncate não deleta e recria a tabela, apenas apaga os dados e libera as páginas ocupadas
e) a opção II somente é mais lenta que as demais quando nem todos os registros de tabela devem ser removidos. ERRADA: Truncate é mais rápido que o delete
Portanto: Questão furada!
-
Eu acho que vcs poderiam pelo menos citar a fonte das afirmações que vcs fazem.
Segundo[1], ocasionalmente, os usuários tentam excluir todos os registros de uma tabela de só uma vez. Quando eles encontram erros durante esse processo, reclamam que os segmentos de rollback são muito pequenos quando, de fato, suas transações são muito grandes.
Um segundo problema ocorre quando todos os registros foram excluidos. Mesmo que o segmento não tenha mais nenhum registro, ele continua a manter todo o espaço que foi alocado a ele. Portanto, excluir todos esses registros não economiza um único byte de espaço alocado. O comando truncate resolve esses dois problemas. É um comando DDL, não um comando DML, portanto, ndo pode ser revertido.
O comando truncate é a maneira mais rápida de excluir grandes volumes de dados.
Fonte:
[1] Oracle Database 10g - Manual Do Dba, KEVIN LONEY, BOB BRYLA