Questão nº 39
Questão de Tecnologia da Informação · FGV TCE-SP 2023 (nº 39)
Quando referidas, considere as tabelas relacionais TX e TY, criadas e instanciadas com o script SQL a seguir.
create table TY(C int primary key not null, A int) create table TX(A int primary key not null, B int, foreign key (B) references TY(C) on delete cascade ) insert into TY values (1,0) insert into TY(C) values (2) insert into TY(C) values (3) insert into TY values (5,NULL) insert into TY values (6,NULL) insert into TX values (1,2) insert into TX values (2,1) insert into TX values (3,2) insert into TX values (4,2)
Com referência às tabelas TX e TY, como descritas anteriormente, analise o comando SQL a seguir.
delete FROM TY
Após a execução desse comando, o total de linhas, somando-se os números de linhas de cada tabela, é:
- A0; (alternativa correta)
- B1;
- C4;
- D5;
- E9.
Resposta comentada
Gabarito Alternativa A
A regra ON DELETE CASCADE em um banco de dados significa que, quando você exclui uma linha de uma tabela "pai" (a que é referenciada), todas as linhas correspondentes na tabela "filha" (a que faz a referência) são automaticamente excluídas também.
- (A) Correta: Quando o comando
delete FROM TYé executado, todas as linhas da tabelaTYsão marcadas para exclusão. Devido à restriçãoON DELETE CASCADEna tabelaTX(que referenciaTY.Catravés deTX.B), todas as linhas emTXque referenciam as linhas deTYque estão sendo excluídas também são automaticamente excluídas. Como todas as linhas deTYsão excluídas, e todas as linhas deTXreferenciam alguma linha deTY(direta ou indiretamente, pois as que não referenciam seriam as que não teriam sido inseridas ou as que referenciam linhas já excluídas), todas as linhas deTXtambém são excluídas. Assim, ambas as tabelas ficam vazias, resultando em 0 linhas emTY+ 0 linhas emTX= 0 linhas no total. - (B) Incorreta: Esta alternativa sugere que restaria apenas 1 linha no total, o que não ocorre, pois todas as linhas são excluídas devido ao
ON DELETE CASCADE. - (C) Incorreta: Esta alternativa sugere que restariam 4 linhas. Uma armadilha comum seria esquecer o efeito do
ON DELETE CASCADEe considerar que apenas as linhas deTYseriam excluídas, deixando as 4 linhas originais deTXintactas. No entanto, oON DELETE CASCADEgarante que as linhas deTXtambém sejam removidas. - (D) Incorreta: Esta alternativa sugere que restariam 5 linhas, o que não corresponde ao resultado da operação de exclusão em cascata.
- (E) Incorreta: Esta alternativa sugere que restariam 9 linhas, o que seria o número total de linhas antes de qualquer exclusão (5 em
TY+ 4 emTX), não após o comandoDELETE.
Fonte: FGV TCE-SP 2023 Agente da Fiscalização - TI (Caderno Tipo 1). Reproduzida para fins de estudo.