No SQL Server 19, o comando de criação de restrições de chaves estrangeiras (em inglês, foreign key constraints) oferece as cláusulas ON DELETE e ON UPDATE, cujo conjunto de opções permitidas é:
- A)CASCADE, NO ACTION, RAISE ERROR e SET NULL;
Errada, porque RAISE ERROR não é uma opção válida de ON DELETE/ON UPDATE em foreign keys no SQL Server.
- B)CASCADE, NO ACTION, RESTRICT e SET NULL;
Errada, porque RESTRICT não é uma opção aceita pelo SQL Server nessas cláusulas.
- C)CASCADE, NO ACTION, SET DEFAULT e SET NULL;
Certa, porque reúne exatamente as opções permitidas no SQL Server para ON DELETE e ON UPDATE: CASCADE, NO ACTION, SET DEFAULT e SET NULL.
- D)NO ACTION, RAISE ERROR, SET DEFAULT e SET NULL;
Errada, porque RAISE ERROR não existe como ação válida nessas cláusulas no SQL Server.
- E)RESTRICT, SET DEFAULT e SET NULL.
Errada, porque RESTRICT não é aceito pelo SQL Server como ação de foreign key.
Gabarito: C
Em SQL Server, quando você cria uma chave estrangeira, pode definir o que acontece com os registros filhos se o registro pai for apagado ou atualizado. É aí que entram as cláusulas ON DELETE e ON UPDATE: elas servem para automatizar a reação do banco, evitando inconsistências e trabalho manual. As opções aceitas pelo SQL Server são poucas e bem clássicas: CASCADE, NO ACTION, SET NULL e SET DEFAULT. Pense assim: CASCADE manda o efeito “em cadeia”, NO ACTION impede a operação se houver dependência, SET NULL limpa o valor da chave estrangeira e SET DEFAULT coloca o valor padrão definido na coluna. Essas são exatamente as regras reconhecidas pelo SQL Server para foreign keys. Por isso, o gabarito é a letra C. Ela traz o conjunto completo e correto das opções permitidas nas cláusulas ON DELETE e ON UPDATE: CASCADE, NO ACTION, SET DEFAULT e SET NULL. As demais alternativas misturam termos que não pertencem ao SQL Server nesse contexto, como RESTRICT e RAISE ERROR. Em prova, vale lembrar que a banca gosta de trocar nomes parecidos para testar se você realmente conhece a sintaxe. Aqui, a pista principal é que o SQL Server usa esses quatro comportamentos, e não aceita RESTRICT nem RAISE ERROR como opção dessas cláusulas.