KB4009823 - CORREÇÃO: os gatilhos APÓS A EXCLUSÃO ocorrem na ordem errada na cadeia de ações ON DELETE CASCADE no SQL Server 2014 ou 2016

Aplica-se a
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2014 Service Pack 2 - duplicate (do not use)

Sintomas

Considere o seguinte cenário:

  • No SQL Server 2014 ou 2016, você tem várias tabelas, cada uma com uma restrição PRIMARY KEY especificada.
  • Você cria uma cadeia em cascata para essas tabelas usando a restrição FOREIGN KEY junto com a ação ON DELETE CASCADE.
  • Você cria um gatilho AFTER DELETE para cada tabela.
  • Você exclui uma linha da tabela pai. Isso aciona os gatilhos AFTER DELETE e a cadeia de ações ON DELETE CASCADE.

Nesse cenário, os gatilhos podem ocorrer na ordem errada.

Resolução

Esse problema é corrigido nas seguintes atualizações cumulativas para o SQL Server:

Atualização cumulativa 5 para o SQL Server 2016 RTM

Atualização cumulativa 2 para o SQL Server 2016 SP1

Atualização cumulativa 5 para o SQL Server 2014 SP2

Atualização cumulativa 11 para o SQL Server 2014 Service Pack 1

Sobre atualizações cumulativas para o SQL Server

Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e correções de segurança incluídos na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para o SQL Server:

Atualização cumulativa mais recente do SQL Server 2016

Atualizações cumulativas mais recentes do SQL Server 2014

StatusA Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Referências

Restrições de integridade referencial em cascata

Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.