了解SSMS 2008中关系的更新和删除规则

Geo*_*ge2 17 sql sql-server foreign-keys sql-server-2008

当我们定义外键约束时,我对SQL Server 2008 Management Studio中更新和删除规则的含义感到困惑.我也没有找到相关的帮助文档(例如F1帮助).

这是屏幕快照.感谢是否有人可以描述他们的意思并推荐一些相关的文件来阅读.:-)

在此输入图像描述

mar*_*c_s 26

外键定义了两个表之间的父子关系.父表中的主键是最多n个子表行中的外键.

现在,如果父表中的主键获得UPDATE,则UPDATE RULE将启动.所有子行也会更新,设置为NULL或其他.然而,最佳做法是拥有一个永远不会改变的主键(固定ID或其他东西),这是不太重要的规则.

更重要的是DELETE规则 - 如果删除父行(例如删除订单)会怎么样?您也可以使用CASCADE DELETE删除所有子行(所有订单行项目),或者您可以将其外键设置为NULL(它们不再具有父项) - 这完全取决于您的具体方案.

在订单/订单行方案中,删除完整订单时删除订单行可能非常有用,但您可能不想删除产品,只是因为引用它的订单已被删除 - 没有一个单一的正确答案 - 这取决于您的方案和您的应用程序.