KB4009823 - 修正:在 SQL Server 2014 或 2016 的 ON DELETE CASCADE 動作鏈結中,DELETE 觸發程序以錯誤的順序發生

套用到
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)

症狀

請考慮以下案例:

  • 在 SQL Server 2014 或 2016 中,您有數個資料表,每個資料表都指定了 PRIMARY KEY 限制式。
  • 您可以使用外部索引鍵限制式搭配 ON DELETE CASCADE 動作,為這些資料表建立 階層式鏈結 。
  • 您可以為每個資料表建立 AFTER DELETE 觸發程序。
  • 您從父資料表刪除資料列。 這會觸發 AFTER DELETE 觸發程序和 ON DELETE CASCADE 動作鏈。

在此案例中,觸發程序可能會以錯誤的順序出現。

解決方式

此問題已在下列 SQL Server 累積更新中修正:

SQL Server 2016 RTM 的累積更新 5

SQL Server 2016 SP1 的累積更新 2

SQL Server 2014 SP2 的累積更新 5

SQL Server 2014 Service Pack 1 的累積更新 11

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含先前累積更新中的所有 Hotfix 和安全性修正程式。 查看 SQL Server 的最新累積更新:

適用於 SQL Server 2016 的最新累積更新

適用於 SQL Server 2014 的最新累積更新

狀態Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

串聯參考完整性限制式

瞭解 Microsoft 用來說明軟體更新的 術語 。